Pythonre.sub公司不替换regex的一部分

2024-09-26 18:06:28 发布

您现在位置:Python中文网/ 问答频道 /正文

例如,我有一个字符串“完美的猎熊”,我想用单词“the”替换“bear”出现之前的单词。在

所以结果就是“猎熊”

我想我会用

re.sub("\w+ bear","the","perfect bear hunts")

但它也取代了“熊”。我如何排除bear被替换的同时也在匹配中使用它?在


Tags: the字符串re单词bear我会perfect猎熊
3条回答

在贝尔斯登之前,用积极的展望取代一切:

re.sub(".+(?=bear )","the ","perfect bear swims")

.+将捕获任何字符(除了行结束符)。在

使用lookaheads的替代方法:

捕获要继续使用组()的部分,并在替换中使用\1重新插入它。在

re.sub("\w+ (bear)",r"the \1","perfect bear swims")

和其他答案一样,我会使用积极的前瞻性断言。在

然后通过一些评论来解决这个问题(比如“胡子”之类的词呢?),我会添加(\b|$)。这将匹配单词边界或字符串的结尾,因此只匹配单词bear,不再匹配。在

所以你得到了以下结果:

import re

def bear_replace(string):
    return re.sub(r"\w+ (?=bear(\b|$))", "the ", string)

和测试用例(使用pytest):

^{pr2}$

相关问题 更多 >

    热门问题