正則表達式中的量詞有哪些?如何使用它們?

正則表達式中的量詞包括、+、?、{},用于控制字符或分組的匹配次數;1.表示前一個字符出現0次或多次;2.+表示至少出現1次;3.?表示0次或1次;4.{}可精確控制次數,如{n}恰好n次,{n,}至少n次,{n,m}介于n至m次;貪婪模式會盡可能多匹配內容,而非貪婪模式(加?)則相反;實際應用中需注意分組整體匹配應使用括號包裹,不確定部分可用?處理,同時需謹慎使用貪婪與非貪婪模式以避免誤匹配。

正則表達式中的量詞有哪些?如何使用它們?

正則表達式中的量詞用來控制匹配次數,比如一個字符或一組字符要出現多少次才算匹配成功。掌握這些量詞能讓你寫出更靈活、更精準的正則表達式。

正則表達式中的量詞有哪些?如何使用它們?


常見量詞及基本用法

正則里的量詞主要有這么幾個:*、+、?、{},它們分別代表不同的重復次數:

正則表達式中的量詞有哪些?如何使用它們?

  • *:前一個字符出現 0 次或多次
    比如 /go*/ 可以匹配 “g”、”go”、”goo” 等。

  • +:前一個字符出現 1 次或多次
    比如 /go+/ 可以匹配 “go”、”goo”,但不能匹配只有 “g” 的情況。

    正則表達式中的量詞有哪些?如何使用它們?

  • ?:前一個字符出現 0 次或 1 次
    比如 /colou?r/ 可以同時匹配 “color” 和 “colour”。

  • {}:精確控制出現次數

    • {n}:恰好 n 次,如 /a{3}/ 匹配 “aaa”,不匹配 “aa” 或 “aaaa”
    • {n,}:至少 n 次
    • {n,m}:至少 n 次,最多 m 次

這些量詞通常跟在字符、分組或字符類后面使用,非常實用。


貪婪與非貪婪模式的區別

默認情況下,正則表達式是“貪婪”的,也就是盡可能多地匹配內容。比如:

  • 正則:/<.>/
    輸入:text
    結果會匹配整個 text,而不是只匹配第一個 或單獨匹配

如果你希望它盡可能少地匹配,可以加上 ?,變成“非貪婪”模式:

  • 正則:/<.>/
  • 同樣輸入會分別匹配

這個區別在處理 html 或日志文件時特別重要,一不小心就可能匹配到你不想看到的內容。


實際應用建議

在寫正則的時候,有幾個小技巧可以避免踩坑:

  • 如果你想匹配的是具體字符,比如 “a” 出現三次,直接寫 /a{3}/ 就行了。
  • 如果匹配的是多個字符組成的整體,記得用括號包裹起來,再加量詞。比如 /abc/{3}/ 是錯的,正確寫法是 /(abc){3}/,表示 “abc” 整體出現三次。
  • 在不確定有沒有某部分文本的時候,用 ? 非常方便。例如,電話號碼中可能有區號也可能沒有,可以用 d{3}-?d{8} 來匹配。
  • 處理大量文本時,注意貪婪和非貪婪的影響,尤其是跨行匹配的情況。

基本上就這些。量詞雖然不多,但組合起來很靈活,關鍵是理解每個符號的意義,并根據實際需求選擇合適的寫法。

? 版權聲明
THE END
喜歡就支持一下吧
點贊9 分享