【发布时间】:2016-11-19 22:54:16
【问题描述】:
我正在尝试获取一个正则表达式: - 具有 0 和 1 的任意序列。(仅限二进制) - 并且不包含 00
我知道它们是分开的,但我如何将它们结合起来?
(?:[0-1]+)+
以上用于任何类型的 0101 序列。
这是部分问题的截图:
任何线索参考将不胜感激。
【问题讨论】:
我正在尝试获取一个正则表达式: - 具有 0 和 1 的任意序列。(仅限二进制) - 并且不包含 00
我知道它们是分开的,但我如何将它们结合起来?
(?:[0-1]+)+
以上用于任何类型的 0101 序列。
这是部分问题的截图:
任何线索参考将不胜感激。
【问题讨论】:
我来到了这个表格:
0?(1+0?)*
解释:
0? - 可以以 0 开头
1+ - 1s 的非空序列0? - 后跟最多一个 0
(1+0?)* - 2-3 次重复任意次数【讨论】:
00。演示:regex101.com/r/2CFroT/5
0,第二个 0(和一个空字符串)。
正则表达式如0?(1+0)*将匹配字符串的任何部分,因此它将匹配字符串的中间部分如000011000000,它将匹配0110。要检查整个字符串是否匹配,需要添加字符串锚点的开头和结尾,给出^0?(1+0)*$。这也将匹配一个空字符串。要匹配非空字符串,我们可以使用^0?(1+0)+$,但这不会匹配带有单个0 的字符串。所以我们需要添加一个替代项(使用|)来匹配0,从而得到总表达式^((0?(1+0?)+)|0)$。
这些括号是捕获括号,它们可以更改为非捕获形式,但这会使表达式更大,并且在视觉上更复杂。
【讨论】:
【讨论】:
00的1001...而且它不会匹配1或0。