正則表達式 - 匹配或者不匹配開頭


  • 快速常用
1、以“河南”開頭
/^河南.*/

2、以“(河南)”開頭
/^[\(\(]河南[\)\)].*/

3、不以“河南”開頭
/^(?!河南).*/

刪除不是Bearer開頭的行:
^(?!Bearer).*\n 替換成 空

4、不以“(河南)”開頭
/^(?![\(\(]河南[\)\)]).*/
  1. (?:pattern):
    (?:)表示非捕獲分組,和捕獲分組唯一的區別在於,非捕獲分組匹配的值不會保存起來
    (?:pattern)在使用 "或" 字符 (|) 來組合一個模式的各個部分是很有用。例如,'industr(?:y|ies)' 就是一個比 'industry|industries' 更簡略的表達式。因為我們單獨存儲下 “y” 或者 “ies” 沒有什么意義

  2. (?=pattern)
    正向肯定預查(look ahead positive assert),匹配pattern前面的位置。這是一個非獲取匹配,也就是說,該匹配不需要獲取供以后使用。
    簡單說,以 xxx(?=pattern)為例,就是捕獲以pattern結尾的內容xxx
    例如,"Windows(?=95|98|NT|2000)"能匹配"Windows2000"中的"Windows",但不能匹配"Windows3.1"中的"Windows"。預查不消耗字符,也就是說,在一個匹配發生后,在最后一次匹配之后立即開始下一次匹配的搜索,而不是從包含預查的字符之后開始。

  3. (?!pattern)#
    正向否定預查(negative assert),在任何不匹配pattern的字符串開始處匹配查找字符串。這是一個非獲取匹配,也就是說,該匹配不需要獲取供以后使用。
    簡單說,以 xxx(?!pattern)為例,就是捕獲不以pattern結尾的內容xxx
    例如"Windows(?!95|98|NT|2000)"能匹配"Windows3.1"中的"Windows",但不能匹配"Windows2000"中的"Windows"。預查不消耗字符,也就是說,在一個匹配發生后,在最后一次匹配之后立即開始下一次匹配的搜索,而不是從包含預查的字符之后開始。

  4. (?<=pattern)#
    反向(look behind)肯定預查,與正向肯定預查類似,只是方向相反。
    簡單說,以(?<=pattern)xxx為例,就是捕獲以pattern開頭的內容xxx。
    例如,"(?<=95|98|NT|2000)Windows"能匹配"2000Windows"中的"Windows",但不能匹配"3.1Windows"中的"Windows"。

  5. (?<!pattern)#
    簡單說,以(?<!pattern)xxx為例,就是捕獲不以pattern開頭的內容xxx。
    反向否定預查,與正向否定預查類似,只是方向相反。例如"(?<!95|98|NT|2000)Windows"能匹配"3.1Windows"中的"Windows",但不能匹配"2000Windows"中的"Windows"。

有空仔細看:
https://www.cnblogs.com/dogecheng/p/11466687.html
https://blog.csdn.net/lxcnn/article/details/4304651


免責聲明!

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



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