我试图写一个正则表达式来替换所有出现的美国。这就是我的想法。
string = re.sub(r'\bU.S.\b', 'U S ', string)
当我运行它时,它只找到第一次出现。为什么这样,我该如何解决这个问题。谢谢
答案 0 :(得分:2)
问题是.
在正则表达式中具有特殊含义(它匹配任何字符),因此需要对其进行转义。
string = re.sub(r'\bU\.S\.', 'U S ', string)
此外,您不应在\b
之后使用.
。 \b
匹配单词和非单词字符。由于.
是非单词字符,因此仅当.
后跟单词字符时才会匹配,例如U.S.foo
,但不是U.S. currency
,因为.
后跟空格,而不是单词字符。
答案 1 :(得分:0)
如果您在文件中搜索,要查找所有出现并替换它们,您需要逐行搜索。
。需要 \。因为。本身在RE中有其他含义。 更安全的实现方式是编写\ b +,因此它会计入一个或多个此类情况。
r并不意味着重复,这意味着转义字符不会被处理
顺便说一句,你不需要担心\ b之后。因为RE会在此之前匹配所有内容,并忽略不匹配的内容。当你有错误的RE时,你确实第一次打印了第一部分,对吗?