我想与AhKs
和AdKs
之类的字符串匹配(即两张牌Ah =红桃A)。我想用正则表达式匹配两张副牌,我目前拥有的是"^[AKQJT2-9][hscd]{2}$"
,但这可以匹配AhKh
(已匹配)和AhAh
这样的手。有没有办法使用反向引用来说第二个[hscd]
不能与第一个相同(类似于[AKQJT2-9]
)
最佳答案
试试这个正则表达式:
^[AKQJT2-9]([hscd])[AKQJT2-9](?!\1)[hscd]$
在此,negative look-ahead assertion
(?!…)
用于不允许第四个字符与第二个字符相同(第一个分组的匹配项)。但是,如果正则表达式实现不支持环顾断言,则可能需要将其扩展为:
^[AKQJT2-9](h[AKQJT2-9][scd]|s[AKQJT2-9][hcd]|c[AKQJT2-9][hsd]|d[AKQJT2-9][hsc])$