正则表达式来替换美国的所有匹配项
问题描述:
我正在尝试写一个正则表达式来替换美国的所有匹配项。这是我认为会起作用的东西。正则表达式来替换美国的所有匹配项
string = re.sub(r'\bU.S.\b', 'U S ', string)
当我运行它时,它只发现第一次出现。为什么是这样以及如何解决这个问题。谢谢
答
问题是.
在正则表达式(它匹配任何字符)中有特殊含义,所以它需要被转义。
string = re.sub(r'\bU\.S\.', 'U S ', string)
而且,你不应该.
后使用\b
。 \b
匹配单词和非单词字符。由于.
是非单词字符,因此只有在.
后面跟随单词字符(例如, U.S.foo
,但不是U.S. currency
,因为.
之后是空格,它不是单词字符。
答
,如果你在一个文件中搜索,找到所有出现并取代它们,你需要通过在线搜索线。
的。需要 \。因为。本身在RE中有其他含义。 实现一个更安全的方法是编写\ b +,因此它可以计算一个或多个这种情况。
[R并不意味着重复,就意味着转义字符不会被处理
顺便说一下,你不需要后担心\湾因为在此之前RE将匹配所有内容,并忽略不匹配的内容。你确实在第一次打印第一部分,而你错误的RE时,对吧?
我以为r导致它重复。对不起 – Kahless
'r'表示原始字符串。 –
我明白了。谢谢。我会重新阅读文档。 – Kahless