python - python正则表达式中的贪婪反向引用?

标签 python regex backreference

在我的例子中,我想捕获文本中的重复字符;同时,重复模式的前后最多3个字符也应该被捕获。例如,

<表类="s-表"> <头> 原创 前缀 重复 后缀 <正文> 1aab 1 啊啊 b 1aaab 1 啊啊啊 b 1234aaabcde 234 啊啊啊 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)

但它给出了这样的结果:

<表类="s-表"> <头> 原创 前缀 重复 后缀 需要吗? <正文> 1aab 1 啊啊 b 是 1aaab 1a 啊啊 b 没有 1234aaabcde 234 啊啊啊 bcd 是

有什么帮助吗?谢谢。

最佳答案

您可以使用 4 个捕获组,其中组中缀仅用于捕获要重复的单个字符。

(?P<prefix>.{0,3}?)(?P<repeat>(?P<infix>[a-z])(?P=infix)+)(?P<postfix>.{0,3})

Regex demo

关于python - python正则表达式中的贪婪反向引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67917653/

相关文章:

python - 为什么SymPy不集成这个功能呢?

python - 正则表达式匹配字符串python

ruby-on-rails - 忽略部分正则表达式的大小写

ruby - 使用分组时如何使用 gsub 在 Ruby 正则表达式 (regex) 中反向引用?

c# - 反向引用是否需要在它们引用的组之后?

python - 我怎样才能只比较数据框的模式?

python - 如何创建一些类别分组和一些堆叠的条形图

python - 如何在 ATOM XML 文档中搜索大小写混合的标记名称?

c# - 用于检查输入字符串的正则表达式只是波斯语

r - 在 R 的正则表达式中是否有等效的 "&"用于反向引用整个匹配?