正則的使用總結

正則的使用總結

blog正則表達式


1.一些常見的元字符

  • \b : 單詞的開頭或結尾, 也可稱做單詞的分界處. 通常單詞使用的是空格或是標點符號來分隔單詞,\b只是匹配一個位置,並不匹配單詞分隔符中的任何一個.
  • . : 匹配除了換行符之外的任意字符.
  • * : 匹配在它以前的能夠連續重複使用任意次用來使整個表達式得以匹配,表明的既不是字符也不是位置.(.*組合在一塊兒是任意數量的不包含換行的字符).
  • + : 匹配重複1次或更屢次(注意和*的區別).
  • \d : 匹配數字.
  • \w : 匹配字母或數字或下劃線或漢字.
  • ^ : 匹配字符串的開始.
  • $ : 匹配字符串的結束.
  • \s : 匹配任意的空白符,包括空格,製表符(Tab),換行符,中文全角空格等.

2.經常使用的反義字符

  • \W : 匹配任意不是字母,數字,下劃線,漢字的字符.
  • \S : 匹配任意不是空白符的字符.
  • \S+ : 匹配不包含空白符的字符串.
  • \D: 匹配任意非數字的字符.
  • \B : 匹配不是單詞開頭或結束的位置.
  • [^x] : 匹配除了x之外的任意字符.
  • [^aeiou] : 匹配除了aeiou這幾個字母之外的任意字符.

3.經常使用的限定符

  • * : 重複零次或更屢次.
  • + : 重複一次或更屢次.
  • ? : 重複零次或一次.
  • {n} : 重複n次.
  • {n,} : 重複n次或更屢次.
  • {n,m} : 重複n到m次.

4.分枝條件(|)

  • | 即管道,知足任意一種狀況均可以匹配 (\d{5}-\d{4}|\d{5},美國郵政編碼,5位數字或是使用-9位數字).

5.分組(())

  • () 即子表達式,指定子表達式重複的次數((\d{1,3}\.){3}\d{1,3},ip地址,更復雜的ip匹配((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?))

6.經常使用的分組語法

(1)捕獲與非捕獲
  • (exp) : 匹配exp,並捕獲文本到自動命名的組裏.
  • (?<name>exp) : 匹配exp,並捕獲文本到名稱爲name的組裏,也能夠寫成(?'name'exp).
  • (?:exp) : 匹配exp,不捕獲匹配的文本,也不給此分組分配組號.((?:exp)不會改變正則表達式的處理方式,只是這樣的組匹配的內容不會像前兩種那樣被捕獲到某個組裏面,也不會擁有組號。)
(2)零寬斷言(如\b,\^,$用於指定位置)
  • (?=exp) : 匹配exp前面的位置.(\b\w+(?=ing\b)匹配以ing結尾的單詞的除ing之外的部分)
  • (?<=exp) : 匹配exp後面的位置.((?<=\bre)\w+\b匹配以re開頭的單詞除re之外的部分)
  • (?!exp) : 匹配後面跟的不是exp的位置.
  • (?<!exp) : 匹配前面不是exp的位置.
(3)註釋
  • (?#comment) : 這種類型的分組不對正則表達式的處理產生任何影響,用於提供註釋讓人閱讀.

7.常見的等

  • \d = [0-9]
  • + = {1,}
  • * = {0,}
  • ? = {0,1}
  • \D = [^0-9]
  • \w = [A-Za-z_0-9]

8.match,exec,test,search,replace,split使用介紹

  • match 方法
    使用正則表達式模式對字符串執行查找,並將包含查找的結果做爲數組返回。
    stringObj.match(rgExp)
  • exec 方法
    用正則表達式模式在字符串中查找,並返回該查找結果的第一個值(數組),若是匹配失敗,返回null。
    rgExp.exec(str)
  • test 方法
    返回一個 Boolean 值,它指出在被查找的字符串中是否匹配給出的正則表達式。
    rgexp.test(str)
  • search 方法
    返回與正則表達式查找內容匹配的第一個子字符串的位置(偏移位)。
    stringObj.search(rgExp)
  • replace 方法
    返回根據正則表達式進行文字替換後的字符串的複製。
    stringObj.replace(rgExp, replaceText)
  • split 方法
    將一個字符串分割爲子字符串,而後將結果做爲字符串數組返回。
    stringObj.split([separator[, limit]])

ps: 參考了不少目前沒有接觸到的知識,有些很複雜的感受須要後期再次閱讀,暫不放進整理的文檔裏,正則按個人理解,匹配的那些都大同小異,我想,寫的一手好正則的人必然是經歷很深刻的理解與實踐才能夠達成,目前在正則上的理解仍是不太夠的,平時實踐的內容最多用在匹配字符串,數字這樣簡單的正則實踐上,不過經過這幾天斷斷續續的整理與思考,發現正則仍是頗有用處,之後再接觸的正則,也必須時刻經過複習與更深入的理解實踐才行.數組

相關文章
相關標籤/搜索