java - 如何使用正则表达式来匹配最后两个字符是前两个字符倒序的任何字符串

标签 java python

例如,正则表达式应匹配“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/

相关文章:

Java Applet - 如何为 JButton 添加双缓冲

java - <jsp :include> doesn't work in magnolia cms

python - 已知值的线性插值(不填充 Nan)

python - 从 MySQL 到 CSV 格式

Python 为什么是 10e26 != 10**26 ? ( float 不准确?)

python - 什么时候 array.array 比列表更有效?

java - 无法运行leJOS NXJ示例项目

java - 从什么时候开始枚举构造函数的默认访问修饰符是私有(private)的?

java - Android Sharedpreferences 传递变量值

python - 不一致的 SignatureDoesNotMatch Amazon S3 与 django-pipeline、s3boto 和存储