2016-09-15 158 views
0

我正在嘗試寫一個正則表達式來替換美國的所有匹配項。這是我認爲會起作用的東西。正則表達式來替換美國的所有匹配項

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

當我運行它時,它只發現第一次出現。爲什麼是這樣以及如何解決這個問題。謝謝

+0

我以爲r導致它重複。對不起 – Kahless

+0

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

+0

我明白了。謝謝。我會重新閱讀文檔。 – Kahless

回答

2

問題是.在正則表達式(它匹配任何字符)中有特殊含義,所以它需要被轉義。

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

0

,如果你在一個文件中搜索,找到所有出現並取代它們,你需要通過在線搜索線。

的。需要 \。因爲。本身在RE中有其他含義。 實現一個更安全的方法是編寫\ b +,因此它可以計算一個或多個這種情況。

[R並不意味着重複,就意味着轉義字符不會被處理

順便說一下,你不需要後擔心\灣因爲在此之前RE將匹配所有內容,並忽略不匹配的內容。你確實在第一次打印第一部分,而你錯誤的RE時,對吧?

相關問題