例如,正则表达式应匹配“aa”、“aba”、“abba”和“asddsa”,但不匹配“abab”。
最佳答案
这应该有效:
^(?=(.)(.)).*\2\1$
请注意,我对前两个字符使用了前瞻,而不是简单地匹配它们。这是因为您还想匹配短于 4 个字符的字符串。所以我们不想这么早匹配前两个字符。
我将前两个字符捕获到组 1 和组 2 中,然后匹配 (.*
) 之间的所有内容,然后匹配组 2 中匹配的内容,然后匹配组 1 中匹配的内容(\1\2
)。
Java:
input.matches("^(?=(.)(.)).*\\2\\1$")
Python:
re.match(r"^(?=(.)(.)).*\2\1$", input)
关于java - 如何使用正则表达式来匹配最后两个字符是前两个字符倒序的任何字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55057853/