如何编写正则表达式这些模式:'AA AA','AB AB'不是'AA AB'和'AA AC'

时间:2014-03-03 07:19:16

标签: regex

如何编写产生以下匹配项的正则表达式:

A A [passed]
B B [failed]
AA AA [passed]
a a [failed]
A [failed]
AA AB [failed]
AB AB [passed]
AC AC [passed]
ABB ABB [passed]
ACC ACC [failed]
ABC ABC [passed]
ABBC ABBC [passed]
AABBC AABBC [passed]
BC BC [failed]
AD AD [failed]
AABBC AABB [failed]
AAA [failed]
123 123 [failed]
ABCZ ABCZ [failed]

正则表达式必须正好得到8个正确的匹配和0个错误的匹配。示例正则表达式是[A-Z] +。

1 个答案:

答案 0 :(得分:1)

你可以尝试这种模式:

^(A+B*C?) \1$

A开头,任意数量的B和一个可选C。然后捕获第一部分,匹配一个空格,然后尝试匹配最初匹配的部分,确保只有那个。

regex101 demo

上面的演示使用^(A+B*C?) \1\b,最后使用[passed][failed]标记。如果您想使用$,则必须删除所有[passed][failed]代码。

没有提到明确的规则,所以如果碰巧有正则规则可能需要调整。