正则表达式:拥有除 bba 和 abb 之外的所有字符串
Regular Expression: Having All strings except bba and abb
我正在研究正则表达式,有一个关于制作正则表达式的问题,该正则表达式的字符串至少包含 bba 或 abb 但不能同时出现。
我为此做了以下表达。
a*(baa*)b+b(a*ab)a
但是,我想到了一个问题来制作一个正则表达式,其中包含除 bba 和 abb
之外的所有字符串
现在一头雾水
请帮忙。
注意:它是关于自动机的,不是JavaScript或PHP正则表达式......
您可以使用具有正负前瞻的交替来断言其中一个变体不存在而另一个变体存在,反之亦然。
^(?:(?=.*abb)(?!.*bba)|(?!.*abb)(?=.*bba)).*$
如果两者都不存在,您可以使用:
^(?!.*(?:abb|bba)).*$
试试正则表达式 ^(?!(.*abb.*bba|.*bba.*abb)).*$
这将匹配包含 abb
或 bba
而不是两者
的字符串
如果是自动机,答案不就是
b(aa*b + a)* + (aa*b + a)* + b*
// First one: words like baaaaabaababab, baaa, babaaaaaa
// Second one: words like aaaaabaababab, aaaaaa, aab
// Third one: words like bbbbb, b, , bbb
因为你不能输入 bb,除非它是正则表达式中唯一的词
a^+表示至少有一个a,可以用aa*代替
我正在研究正则表达式,有一个关于制作正则表达式的问题,该正则表达式的字符串至少包含 bba 或 abb 但不能同时出现。
我为此做了以下表达。
a*(baa*)b+b(a*ab)a
但是,我想到了一个问题来制作一个正则表达式,其中包含除 bba 和 abb
之外的所有字符串现在一头雾水
请帮忙。
注意:它是关于自动机的,不是JavaScript或PHP正则表达式......
您可以使用具有正负前瞻的交替来断言其中一个变体不存在而另一个变体存在,反之亦然。
^(?:(?=.*abb)(?!.*bba)|(?!.*abb)(?=.*bba)).*$
如果两者都不存在,您可以使用:
^(?!.*(?:abb|bba)).*$
试试正则表达式 ^(?!(.*abb.*bba|.*bba.*abb)).*$
这将匹配包含 abb
或 bba
而不是两者
如果是自动机,答案不就是
b(aa*b + a)* + (aa*b + a)* + b*
// First one: words like baaaaabaababab, baaa, babaaaaaa
// Second one: words like aaaaabaababab, aaaaaa, aab
// Third one: words like bbbbb, b, , bbb
因为你不能输入 bb,除非它是正则表达式中唯一的词
a^+表示至少有一个a,可以用aa*代替