问题:给定二进制字母{0,1}
,编写一个识别所有单词的正则表达式
至少有两个连续的'1',例如0100110
,0111
,00010011001
。
我的答案是:0*{ (0|1)* 11+ }*
答案 0 :(得分:4)
答案 1 :(得分:1)
如果字母是给定的,那么您就不必考虑任何不在语言中的符号,并且您一次只匹配一个字,这样您就不会担心单词的开头和结尾,这很容易。
.*?11
我们不情愿地匹配所有内容,直到找到两个连续的1。然后我们知道我们匹配的词是我们感兴趣的词。
然而,我觉得这并没有回答你的问题。有些东西告诉我你的工作风格非常有限,不允许不情愿(尽可能少地与*?
匹配),也不允许滥交(匹配"无论如何"与{{1 }})。
相反,请将您的正则表达式视为处于两种可能的状态。第一个是未满足的状态,我们没有匹配两个连续的1,第二个是满意的状态,我们有。
.
。(0|10)*
。11
。如果您有自己喜欢的角色类,则可以使用(0|1)*
。总而言之,我们得到了
[01]*
可以在Regex 101上看到这一点。