如何用带翻转子组的正则表达式匹配{xymyx}模式?
匹配xymyx模式的解决方案
可以用正则实现这个需求,而且是最简洁的方式之一。
正则表达式写法
直接使用带反向引用的正则:(.)(.).\2\1
(.):捕获第一个字符(对应模式里的x)(.):捕获第二个字符(对应模式里的y).:匹配中间任意字符(对应模式里的m)\2:引用第二个捕获组的内容(对应模式里的第二个y)\1:引用第一个捕获组的内容(对应模式里的第二个x)
代码示例(以Python为例)
import re target_str = '9132123867' result = re.search(r'(.)(.).\2\1', target_str) if result: print(result.group()) # 输出:32123
其他方案
如果字符串长度很短,也可以手动遍历检查每个长度为5的子串:
s = '9132123867' for i in range(len(s) - 4): substr = s[i:i+5] if substr[0] == substr[4] and substr[1] == substr[3]: print(substr) break
但这种写法代码量更大,处理长字符串时效率不如正则,所以优先推荐正则方案。
内容的提问来源于stack exchange,提问作者spearritte
相关产品推荐
相关产品推荐

