正则表达式来替换美国的所有匹配项

问题描述:

我正在尝试写一个正则表达式来替换美国的所有匹配项。这是我认为会起作用的东西。正则表达式来替换美国的所有匹配项

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

当我运行它时,它只发现第一次出现。为什么是这样以及如何解决这个问题。谢谢

+0

我以为r导致它重复。对不起 – Kahless

+0

'r'表示原始字符串。 –

+0

我明白了。谢谢。我会重新阅读文档。 – Kahless

问题是.在正则表达式(它匹配任何字符)中有特殊含义,所以它需要被转义。

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

而且,你不应该.后使用\b\b匹配单词和非单词字符。由于.是非单词字符,因此只有在.后面跟随单词字符(例如, U.S.foo,但不是U.S. currency,因为.之后是空格,它不是单词字符。

DEMO

+0

非常感谢您的澄清。仍试图围绕雷克斯说唱我的头。 – Kahless

+0

www.regular-expression.info有一个很好的教程 – Barmar

+0

很酷谢谢我会检查出来。我只是重新测试,出于某种原因,它仍然只是第一次出现。 – Kahless

,如果你在一个文件中搜索,找到所有出现并取代它们,你需要通过在线搜索线。

的。需要 \。因为。本身在RE中有其他含义。 实现一个更安全的方法是编写\ b +,因此它可以计算一个或多个这种情况。

[R并不意味着重复,就意味着转义字符不会被处理

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