![](/img/trans.png)
[英]Do regular expressions from the re module support word boundaries (\b)?
[英]How do I use regular expressions to match a word with boundaries?
例如,我有這個字符串: "http://www.google.com/this_is_our_network/"
我希望匹配“work”這個詞,但在開頭或結尾沒有字母字符。 在上面的示例中,正則表達式不應返回匹配項。
但是,在這個字符串中: "http://www.google.com/work_for_us.html"
正則表達式應該出現匹配,因為在開頭或結尾都沒有字母字符。
試試這個正則表達式: (?<=[\\W_])work(?=[\\W_])
這使用正向前瞻和后視斷言來尊重封閉的字符但不包括在匹配中。
這個正則表達式匹配work
\\W
字符或下划線 \\W
字符或下划線。 \\b
用於字邊界匹配不能使用,因為_
匹配\\w
這里不需要。
更多例子:
匹配多個單詞:
(?<=[\\W_])(work|job)(?=[\\W_])
與上面相同但沒有創建子匹配:
(?<=[\\W_])(?:work|job)(?=[\\W_])
也尊重線端:
(?<=[\\W_])(?:work|job)(?=[\\W_]|$)
關於正則表達式語法的一些有用的注釋:
\\w
匹配所有字母數字字符和下划線; 這相當於[a-zA-Z0-9_]
\\W
與\\w
的完全相反
\\b
匹配\\w
和\\W
字符之間的邊界(或反之亦然)
積極的前瞻性斷言:
foo(?=bar)
匹配foo
后跟bar
,不包括匹配中的bar
。
積極的后視斷言:
(?<=foo)bar
匹配bar
如果它跟在foo
,在匹配中不包括foo
。
有關(python)正則表達式語法的更多信息,請考慮python正則表達式文檔或perl正則表達式文檔 。 此外,基於Web的Python Regex工具非常便於測試。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.