Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 每秒钟1被0包围,形式正则表达式_Regex - Fatal编程技术网

Regex 每秒钟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

我希望每秒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
与另一个
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]*