簡體   English   中英

如何使用正則表達式將單詞與邊界匹配?

[英]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

  1. 如果它遵循\\W字符或下划線
  2. 如果后跟一個\\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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM