2024-09-26 18:06:28 发布
网友
例如,我有一个字符串“完美的猎熊”,我想用单词“the”替换“bear”出现之前的单词。在
所以结果就是“猎熊”
我想我会用
re.sub("\w+ bear","the","perfect bear hunts")
但它也取代了“熊”。我如何排除bear被替换的同时也在匹配中使用它?在
在贝尔斯登之前,用积极的展望取代一切:
re.sub(".+(?=bear )","the ","perfect bear swims")
.+将捕获任何字符(除了行结束符)。在
.+
使用lookaheads的替代方法:
捕获要继续使用组()的部分,并在替换中使用\1重新插入它。在
()
\1
re.sub("\w+ (bear)",r"the \1","perfect bear swims")
和其他答案一样,我会使用积极的前瞻性断言。在
然后通过一些评论来解决这个问题(比如“胡子”之类的词呢?),我会添加(\b|$)。这将匹配单词边界或字符串的结尾,因此只匹配单词bear,不再匹配。在
(\b|$)
bear
所以你得到了以下结果:
import re def bear_replace(string): return re.sub(r"\w+ (?=bear(\b|$))", "the ", string)
和测试用例(使用pytest):
在贝尔斯登之前,用积极的展望取代一切:
.+
将捕获任何字符(除了行结束符)。在使用lookaheads的替代方法:
捕获要继续使用组
()
的部分,并在替换中使用\1
重新插入它。在和其他答案一样,我会使用积极的前瞻性断言。在
然后通过一些评论来解决这个问题(比如“胡子”之类的词呢?),我会添加
(\b|$)
。这将匹配单词边界或字符串的结尾,因此只匹配单词bear
,不再匹配。在所以你得到了以下结果:
和测试用例(使用pytest):
^{pr2}$相关问题 更多 >
编程相关推荐