python 正则表达式中的贪婪反向引用?
greedy backreference in python's reguar expression?
就我而言,我想捕获文本中的重复字符;同时,重复模式的前后最多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})
就我而言,我想捕获文本中的重复字符;同时,重复模式的前后最多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})