首頁 > 後端開發 > Python教學 > 為什麼我的 Python `re.search()` 不使用 `\b` 找出單字邊界?

為什麼我的 Python `re.search()` 不使用 `\b` 找出單字邊界?

Linda Hamilton
發布: 2024-12-06 04:13:17
原創
1005 人瀏覽過

Why Doesn't My Python `re.search()` Find Word Boundaries Using `b`?

單字邊界(b) 正規表示式支援

在Python 中,正規表示式可用於定位和匹配字串中的模式。在探索正規表示式時,您可能已經注意到利用 b 表達式來匹配單字邊界的建議。然而,在某些情況下,這種方法可能會產生意想不到的結果。

問題

考慮以下Python 程式碼片段:

x = 'one two three'
y = re.search("\btwo\b", x)
登入後複製

預計,如果在字串中找到匹配項,此程式碼應傳回一個匹配對象。然而,令人驚訝的是它返回 None。這就提出了一個問題:Python re 模組不支援使用 b 來匹配單字邊界嗎?

給定程式碼片段中的問題在於使用常規字串。為了使正規表示式正確運行,使用原始字串至關重要。原始字串透過在字串前面加上「r」前綴來表示,如下所示:

x = 'one two three'
y = re.search(r"\btwo\b", x)
登入後複製

將字串修改為原始字串解決了問題,程式碼成功傳回了一個匹配物件。

替代方法

匹配單字邊界的另一種方法是使用re.compile() 函數。此函數可讓您定義一個可重複用於多次搜尋的正規表示式對象,從而潛在地提高效率。

word = 'two'
k = re.compile(r'\b%s\b' % word, re.I)
x = 'one two three'
y = k.search(x)
登入後複製

在這種情況下,變數 k 表示編譯後的正規表示式對象,y 包含符合項目的。使用 re.compile() 提供了靈活性和效能優勢,使其成為複雜正規表示式場景的合適選擇。

以上是為什麼我的 Python `re.search()` 不使用 `\b` 找出單字邊界?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板