【问题标题】:How to replace the last matched word using regex in python如何在python中使用正则表达式替换最后一个匹配的单词
【发布时间】:2020-02-20 15:55:54
【问题描述】:

在 python 中使用正则表达式函数我无法替换重复的单词/句子。

从下面的例子中,如何替换重复多次的单词,即Peter Piper在语句中重复了不止一次,以及如何替换最后一个Peter Piper:

ran_ln = "彼得·派珀摘了一小撮泡椒 彼得派珀摘下的一小撮泡椒 如果彼得派博摘了一小撮泡椒 Peter Piper 摘的那一口泡椒在哪里?”

我尝试的是:

 re.sub("Piper", "aaaaa", ran_ln)

但是当我使用这个功能时,所有的 Peter Piper 单词都会被替换。

提前致谢。

【问题讨论】:

  • 阅读有关 regex 的 Python 文档中的“负前瞻”。

标签: python regex python-3.8


【解决方案1】:

Negative lookahead 会是你的朋友。

另请注意,建议在正则表达式模式中使用raw strings

out =  re.sub(r'(Peter Piper)(?:(?!.*\1))'gm, 'aaaaa', ran_ln)

编辑:按照 Diadistis 的建议,删除了误导性的点错字。

【讨论】:

  • 不知道为什么你添加了额外的. 或非捕获组。就像现在一样,它也替换了一个额外的字符。我会把它改成(Peter Piper)(?!.*\1)
猜你喜欢
  • 2015-09-08
  • 1970-01-01
  • 2015-03-06
  • 1970-01-01
  • 2021-10-08
  • 1970-01-01
  • 1970-01-01
  • 2010-10-07
  • 1970-01-01
相关资源
最近更新 更多