仅使用python正则表达式,如何查找和替换句子中出现的第n个单词? 例如:
str = 'cat goose mouse horse pig cat cow'
new_str = re.sub(r'cat', r'Bull', str)
new_str = re.sub(r'cat', r'Bull', str, 1)
new_str = re.sub(r'cat', r'Bull', str, 2)
我有一个句子上面的单词'猫'出现在句子中两次。我想把第二次出现的“猫”改成“牛”,不去碰第一个“猫”字。我的最后一句话是: “猫鹅鼠马猪牛”。在我上面的代码中,我试了3次都没有得到我想要的。
我使用simple函数,它列出所有出现的情况,选择第n个出现的位置,并使用它将原始字符串拆分为两个子字符串。然后它替换第二个子字符串中的第一个匹配项,并将子字符串连接回新字符串:
对于这些变量:
输出:
注:
使用下面这样的负展望。
DEMO
^
断言我们已经开始了。(?:(?!cat).)*
匹配任何字符,但不匹配cat
,零次或多次。cat
匹配第一个cat
子字符串。(?:(?!cat).)*
匹配任何字符,但不匹配cat
,零次或多次。((?:(?!cat).)*cat(?:(?!cat).)*)
)中,以便我们以后可以引用这些捕获的字符。cat
下面的第二个cat
字符串匹配。或
更改
{}
中的数字,以替换字符串cat
的第一个或第二个或第n个匹配项要替换第三个出现的字符串
cat
,请将2
放在大括号中。。Play with the above regex on here ...
这里有一种不使用regex的方法:
用法:
相关问题 更多 >
编程相关推荐