正则表达式替换所有出现的美国

时间:2016-09-15 02:27:38

标签: python

我试图写一个正则表达式来替换所有出现的美国。这就是我的想法。

string = re.sub(r'\bU.S.\b', 'U S ', string)

当我运行它时,它只找到第一次出现。为什么这样,我该如何解决这个问题。谢谢

2 个答案:

答案 0 :(得分:2)

问题是.在正则表达式中具有特殊含义(它匹配任何字符),因此需要对其进行转义。

string = re.sub(r'\bU\.S\.', 'U S ', string)

此外,您不应在\b之后使用.\b匹配单词和非单词字符。由于.是非单词字符,因此仅当.后跟单词字符时才会匹配,例如U.S.foo,但不是U.S. currency,因为.后跟空格,而不是单词字符。

DEMO

答案 1 :(得分:0)

如果您在文件中搜索,要查找所有出现并替换它们,您需要逐行搜索。

。需要 \。因为。本身在RE中有其他含义。 更安全的实现方式是编写\ b +,因此它会计入一个或多个此类情况。

r并不意味着重复,这意味着转义字符不会被处理

顺便说一句,你不需要担心\ b之后。因为RE会在此之前匹配所有内容,并忽略不匹配的内容。当你有错误的RE时,你确实第一次打印了第一部分,对吗?