正則表達式——單詞邊界


      斷言

 正則表達式中的大多數結構匹配的文本會出現在最終的匹配結果中(一般用group(0)可以得到),但是也有些結構並不是真正匹配文本,而只負責判斷在某個位置左/右側的文本是否符合要求,這種結構被稱為斷言(assertion)。常見的斷言有三類:單詞邊界、行起始/結束位置、環視。

  在文本處理中經常可能進行單詞替換,比如吧一段文本中的 row 都替換成 line 。一般想到的是調用字符串的替換方法,直接替換row。 在不同語言中這些方法給不相同,但差別不大。

    替換前:The row we are looking for is row 10.

    替換后:The line we are looking for is line 10.

  不過,這樣替換也可能會造成意想不到的后果。

    替換前:...tomorrow I will wear in brown standing in row 10 next to the rowdy guy...

    替換后:...tomorline I will wear in blinen standing in line 10 next to the linedy guy...

  不僅所有單詞 row 都被替換成了 line,其他單詞內部的 row 也被替換成了 line,這顯然不是我們想要的結果。

  要解決這個問題,必須有辦法確定單詞 row,而不是字符串 row。為解決這類問題,正則表達式提供了專用的單詞邊界(world boundary),記為\b。它匹配的是“單詞邊界”位置,而不是字符。也就是說,\b能夠匹配這樣的位置:一邊是單詞字符,另一邊不是單詞字。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM