Regex 每秒钟1被0包围,形式正则表达式
我希望每秒1都被0包围。我走了这么远:Regex 每秒钟1被0包围,形式正则表达式,regex,Regex,我希望每秒1都被0包围。我走了这么远: 0* + 0*10* + 0*10+10+ 这部分是我想要的。如何确保每秒1都被0包围 我需要使用正式的正则表达式 01010(第二个1被0包围) 0110(第二个1没有被0包围,不是我想要的)使用此模式,如果任何第二个1没有被0包围,它将失败 ^(?:[^1]*1[^1]*010)*(?:[^1]*1?[^1]*)$ 或 如果您的输入字母表(您没有指定)只是0和1(从您的示例中可以看出),这几乎等同于说“没有两个连续的1字符”,因为如果一个奇1
0* + 0*10* + 0*10+10+
这部分是我想要的。如何确保每秒1都被0包围
我需要使用正式的正则表达式
01010(第二个1被0包围)
0110(第二个1没有被0包围,不是我想要的)使用此模式,如果任何第二个
1
没有被0包围,它将失败
^(?:[^1]*1[^1]*010)*(?:[^1]*1?[^1]*)$
或
如果您的输入字母表(您没有指定)只是0
和1
(从您的示例中可以看出),这几乎等同于说“没有两个连续的1
字符”,因为如果一个奇1
与另一个1
相邻,另一个1
将是一个偶数1
,它需要被0
s包围,而不是挨着1
。唯一的其他要求似乎是“如果有偶数个1
s,则不能以1
结尾”
因此,考虑到这一点:
0*(10+)* -- no two consecutive 1s, can't end with a 1
如果要允许以1
结尾,只要有奇数个1
s:
0*(10+10+)*1?0*
如果每秒1
被0
s包围,您需要找到模式010
。然后在此之前,您最多可以有一个1
,具有任意数量的零
因此,要匹配第二个字符串被零包围的字符串,其:
(?:10*(010))
那么,只需重复这一点:
(?:10*(010))+
如果包含其他非01
字符:
(?:[^1]*1[^1]*(010))+[^1]*
这是一个由任意数量的非1、1、任意数量的非1组成的重复组,然后是010
,然后是非1。但第二个1被*和0包围。提供更多示例。不清楚。显示示例字符串和所需结果。同时-显示您迄今为止所做的工作,以便我们可以改进您的代码,而不是进行您的工作或者你(无意冒犯)@Bloody你在运行哪个语言或工具?这匹配一个空字符串。我认为op不想要那个。op不是很清楚,看起来几乎和你编辑的一样。是的,我将删除我的。我建议你复制我的答案。@AvinashRaj,你添加的模式无法输入21201022
(?:[^1]*1[^1]*(010))+[^1]*