我正在嘗試寫一個正則表達式來替換美國的所有匹配項。這是我認爲會起作用的東西。正則表達式來替換美國的所有匹配項
string = re.sub(r'\bU.S.\b', 'U S ', string)
當我運行它時,它只發現第一次出現。爲什麼是這樣以及如何解決這個問題。謝謝
我正在嘗試寫一個正則表達式來替換美國的所有匹配項。這是我認爲會起作用的東西。正則表達式來替換美國的所有匹配項
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