问题描述
就我而言,我想捕获文本中的重复字符;同时,重复图案前后最多3个字符也应该被捕获。例如,
原创 | 前缀 | 重复 | 后缀 |
---|---|---|---|
1aab | 1 | aa | b |
1aaab | 1 | aaa | b |
1234aaabcde | 234 | aaa | bcd |
我在 python 中创造了一个 RE 字符串:
reobj = re.compile("(?P<prefix>.{0,3}) (?P<repeat>(?P<infix>[a-z])(?P=infix){1,}) (?P<postfix>.{0,3})",re.IGnorECASE | re.VERBOSE | re.DOTALL)
但它给出了这样的结果:
原创 | 前缀 | 重复 | 后缀 | 需要吗? |
---|---|---|---|---|
1aab | 1 | aa | b | 是的 |
1aaab | 1a | aa | b | 没有 |
1234aaabcde | 234 | aaa | bcd | 是的 |
有什么帮助吗?谢谢。
解决方法
您可以使用 4 个捕获组,其中组中缀仅用于捕获要重复的单个字符。
(?P<prefix>.{0,3}?)(?P<repeat>(?P<infix>[a-z])(?P=infix)+)(?P<postfix>.{0,3})