以下字符串为例
abc12, abc13, abc23, abc288, abd12
如果我只想匹配abc12和abc13,那么应该使用什么常规字符串。
我认为它应该是abc[(12)|(13)]
,因此12
和13
将被组合在一起并匹配其中任何一个,但事实证明,此字符串将匹配上述所有字符串。< / p>
答案 0 :(得分:3)
你当前的正则表达式没有按照你的想法行事:
abc[(12)|(13)]
这表示匹配abc
后跟以下任何一个字符:
1, 2, 3, (, ), or |
括号内的字符是字符类的一部分,或者是可以匹配的字符组。对于您的用例,您可能需要这样的内容:
abc1[23]
匹配abc1
后跟2
或3
。
如果您想匹配abc12
或abc23
,可以使用此功能:
abc(?:12|23)
这里我们不能真正使用字符类,但我们可以使用交替。括号中的数量将与12
或23
匹配。如果你想知道?:
做了什么,它只是告诉Perl正则表达式引擎而不是来捕获括号内的内容,这是它默认情况下会做的。