正则表达式不包含101

Mah*_*aha 6 regex

发现不包含101的正则表达式如下:

0 * 1 * 0 * +(1 + 00 + 000)* +(0 + 1 + 0 +)*

我无法理解作者如何提出这个正则表达式.所以我只想到了不包含101的字符串:

01000100

我似乎上面的正则表达式不匹配上面的字符串.但我不确定.所以尝试在regex101.com上转换为等效的pcre正则表达式,但也失败了(因为可以看出我的正则表达式甚至不匹配包含单个1的字符串.

我的翻译有什么问题?上面的正则表达式确实正确吗?如果不是正确的正则表达式是什么?

Pru*_*Raj 1

阅读 regex101 右侧选项卡中的说明,它告诉您正则表达式的作用(我认为您误解了列表运算符的作用),在列表运算符 ( [) 内,其他字符(例如)(将不再是元字符,因此表达式[(0*1*0*)[1(00)(000)]将等于[01()*[]这意味着它匹配0 or 1 or ( or ) or [

\n\n

正则表达式0\xe2\x88\x971\xe2\x88\x970\xe2\x88\x97+(1+00+000)\xe2\x88\x97+(0+1+0+)\xe2\x88\x97\n\n 的正确翻译如下:

\n\n
^((?:0*1*0*)|(?:1|00|000)*|(?:0+1+0+)*)$\n
Run Code Online (Sandbox Code Playgroud)\n\n

正则表达式101

\n\n

正则表达式可视化

\n\n

调试演示

\n\n

你的正则表达式做什么[(0*1*0*)[1(00)(000)]*(0+1+0+)*]

\n\n

[(0*1*0*)[1(00)(000)]* -> matches any of characters 0,(,),*,[ zero or more times followed by

\n\n

(0+1+0+)* --> matches the pattern 0+1+0+ 0 or more times followed by\n] --> matches the character ]

\n\n

所以你的表达相当于

\n\n

[([)01](0+1+0+)*]这不是匹配不包含的字符串的正则表达式101

\n