一張思惟導圖,讓正則表達式再也不難懂

一張精彩的導圖 java

關注公衆號回覆「正則導圖」便可下載xmind源文件正則表達式

 

導圖內容解析spring

  • 語法結構
  • 字符
    • 普通字符:字母、數字、漢字、下劃線,匹配與之相同的一個字符
    • 簡單轉義字符:\n(換行),\t(製表),\\(\自己)和 \^...(\^等有特殊做用的符號如要匹配本身的話要用轉義)
    • 標準字符集合
      注意區分大小寫,大寫是相反的意思,匹配相反是不匹配
      • \d
        任意一個數字,0~9
      • \w
        任意一個字母、數字、漢字或下劃線,A~Z、a~z、0~九、_和任意一個漢字
      • \s
        任意空白符,包括空格、製表符、換行符
      • .
        小數點能夠匹配任意一個字符,換行除外(若是要匹配包括"\n"在內的全部字符,通常用[\s\S])
    • 自定義字符集合
      [ ]方括號匹配方式,可以匹配方括號中的任意一個字符,^表示取反
      • [ab5@]
        匹配"a"或"b"或"5"或"@"
      • [^abc]
        匹配a、b、c以外的任意字符
      • [f-k]
        匹配「f"到"k"之間的字符
      • [^A-F0-3]
        匹配「A"-"F","0"-"3"以外的任意一個字符
  • 量詞(Quantifier)
    修飾前面的一個表達式,若是要修飾多個表達式,就用( )把表達式包起來
    • {n}
      表達式重複n次​
    • {m,n}
      表達式至少重複m次,最多重複n次
      • 貪婪模式 (默認)
        匹配符合的最長的字符串
      • 非貪婪模式 (在量詞後面加 ? 例:{m,n}? )
        匹配符合的最短的字符串
    • {m,}
      表達式至少重複m次

    • 匹配表達式0或1次,至關於{0,1}
    • +
      表達式至少出現一次,至關於{1,}
    • *
      表達式不出現或出現任意次,至關於{0,}
  • 字符邊界
    零寬:匹配的不是字符而是位置,符合某種條件的位置
    • ^
      與字符串開始的地方匹配
    • $
      與字符串結束的地方匹配
    • \b
      匹配一個單詞的邊界,當前位置前面的字符和後面的字符不全是\w
  • 預搜索(零寬斷言、環視)
    零寬:匹配的不是字符而是位置,符合某種條件的位置
    • (?=exp)
      斷言自身出現的位置的後面能匹配表達式exp
    • (?!exp)
      斷言自身出現的位置的後面不能匹配表達式exp
    • (?<=exp)
      斷言自身出現的位置的前面能匹配表達式exp
    • (?<!exp)
      斷言自身出現的位置的前面不能匹配表達式exp
  • 匹配模式
    對文本的處理方式
    • IGNORECASE 忽略大小寫模式
      • 匹配時忽略大小寫
      • 默認是區分大小寫的
    • SINGLELINE 單行模式
      • 整個文本看做一個字符串,只有一個開頭一個結尾
      • 使小數點"."能夠匹配包含換行符(\n)在內的任意字符
    • MULTILINE 多行模式
      • 每行都是一個字符串
      • 在多行模式下,若是須要僅匹配字符串開始和結束位置,可使用\A和\Z
  • 選擇符和分組
    分支結構、捕獲組合非捕獲組
    • | 分支結構​
      左右表達式之間「或」關係,匹配左邊或右邊
    • ( ) 捕獲組
      • (1)、在被修飾匹配次數的時候,括號中的表達式能夠做爲總體被修飾
      • (2)、取匹配結果的時候,括號中的表達式匹配到的內容能夠被單獨獲得
      • (3)、每一對括號會分配一個編號,使用()的捕獲根據左括號的順序從1開始自動編號。捕獲編號爲零的第一個捕獲是整個正則表達式模式匹配的文本
      • 反向引用:經過反向引用,能夠對分組已捕獲的字符串進行引用。
    • (?:Expression) 非捕獲組
      一些表達式中,不得不使用(),但又不須要保存()中子表達式匹配的內容,這時能夠用非捕獲組來抵消()帶來的反作用。

上篇文章閱讀mvc

掃一掃關注java-mindmap公衆號.jpg

相關文章
相關標籤/搜索