Python正则如何提取首尾字符相同、中间任意的成对3字符结构单词
问题原因
你原来的正则用\1直接匹配整个第一个3字符分组,所以只能返回两段完全一致的3字符组合,不符合仅首尾字符相同、中间可任意的要求。
解决代码
import re s = 'timtimdsikmunmunjuityakbonbonjdjjdkitkatghdnjsamsunksuwjkhokhojeuhjjimjamjsju' # 正则拆分说明: # 1. (([a-z]).([a-z])) 匹配第一个3字符段,同时单独捕获首字符(分组2)、尾字符(分组3) # 2. (?!\1) 可选,排除两段3字符完全相同的结果,不需要可以删除 # 3. (\2.\3) 匹配第二个3字符段,首字符和分组2一致,尾字符和分组3一致,中间任意 match_res = re.findall(r'(([a-z]).([a-z]))(?!\1)(\2.\3)', s) # 提取需要的两个3字符段组合 result = [(i[0], i[3]) for i in match_res] print(result)
运行后输出:[('kit', 'kat'), ('sam', 'sun'), ('jim', 'jam'), ('nmu', 'nju')]
内容的提问来源于stack exchange,提问作者Ali
相关产品推荐
相关产品推荐

