结合正则表达式

时间:2011-05-11 13:54:58

标签: regex

如何组合正则表达式?

编辑:这是为了考试准备。问题是写一个正则表达式来查找所有具有奇数a和偶数b的字符串?

即。而不是|对于OR,我需要一种机制来模拟AND

我有两个正则表达式:

1) to find odd number of a's:

^[^a]*a([^a]*a[^a]*a)*[^a]*$

2) to find even number of b's:

^([^b]*b[^b]*b)*[^b]*$

1 个答案:

答案 0 :(得分:6)

您可以使用lookahead expressions执行此操作(此处显示为详细的正则表达式,因为它确实难以阅读,更多内容在一行上):

^                                   # start of string
(?=(?:(?:[^a]*a){2})*[^a]*$)        # assert an even number of as
(?=[^b]*b(?:(?:[^b]*b){2})*[^b]*$)  # assert an odd number of bs
.*                                  # match anything
$                                   # end of string

如果您只是验证,则可以删除最后两行 - 它们只是匹配整个字符串。