【问题标题】:Matching regular expression OR and AND匹配正则表达式 OR 和 AND
【发布时间】:2014-08-18 13:47:21
【问题描述】:

我需要使用正则表达式匹配 1 或 (AND) 0。

例如

^((1+|0+)|(1*,0*))1((1+|0+)|(1*,0*))1+((1+|0+)|(1*,0*))$ 

匹配01001110。 我想知道如何匹配"either series of 1 or series of 0 or mixed series of 1 and 0"

我已尝试以下方法,但不适用于字符串 1010

^((1+|0+)|(1*,0*))1+((1+|0+)|(1*,0*))$

这个想法是,在this 问题中,“A”可以表示为 1+ 或 0+ 或两者的混合。 所以我试图推导如上所示的正则表达式。

【问题讨论】:

  • 你的意思是 alternate 系列的 1 和 0,比如 01010101...?
  • [01]+ 有什么问题
  • 如果您发布输入示例,指出哪些部分应与正则表达式匹配以及应跳过哪些部分(以及为什么),这将有很大帮助。否则,您需要的是简单的[01]+

标签: java regex


【解决方案1】:

我不确定这是否是您想要的,但如果您想查找仅包含 1 和/或 0 的系列,那么您的正则表达式可能看起来像 (1|0)+,也可以使用 character class 编写如[01]+

【讨论】:

  • 正是我需要的。
【解决方案2】:

如果你只是匹配二进制数字,你可以使用:

Pattern any = Pattern.compile("[01]+");

如果你想要备用二进制数字,你可以使用:

Pattern alt = Pattern.compile("((?<=0|^)1|1(?=0|$))+");

【讨论】:

    【解决方案3】:

    这是你需要的吗?

    ^([0,1]+)$
    

    试试这个网站做进一步的测试:

    http://www.regexplanet.com/advanced/java/index.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多