我正在尝试编写一个正则表达式来匹配成对的卡(AA, KK, QQ ... 22)
,我有正则表达式([AKQJT2-9])\1
。我遇到的问题是这个正则表达式将匹配AA
以及AAbc
等。有没有办法编写正则表达式,以便我可以指定我想匹配([AKQJT2-9])\1
并且只有那个(即之后不再有字符)。
答案 0 :(得分:5)
将正则表达式括在^
和$
:
^([AKQJT2-9])\1$
^
是“字符串开始”锚点,$
是“字符串结束”锚点。如果您的正则表达式支持它,\A
和\Z
可能是更好的选择,因为^
和$
也可以匹配多行字符串中行的开头/结尾,取决于您的正则表达式引擎和配置。
答案 1 :(得分:3)
你的意思是,像这样?
^([AKQJT2-9])\1$
只有在字符串为“AA”,“KK”,...
时才会匹配如果要捕获两个字符,而不是字符串的其余部分,则必须使用另一个括号
($match,$unused) = $string ~= (([AKQJT2-9])\2); # in perl