正則詳解

鏈接1
鏈接2
鏈接3

正則正則
^ 匹配行或字符的開頭
$ 匹配行或字符的結尾

\b 匹配單詞的邊界

\w 匹配字母,數字或下劃線
\d digital
\s space
. 除換行符的所有字符

大寫 取反
“\W” 匹配任意不是字母,數字,下劃線 的字符
“\S” 匹配任意不是空白符的字符
 “\D” 匹配任意非數字的字符
“\B” 匹配不是單詞開頭或結束的位置

[] [0-9] or [abc] 順序或所有的
[^abc] 匹配除了abc 的所有符號

數量
* 0- 無窮
+ 1- 無窮
? 0 或 1
{n} n 次
{n,m} n 到 m 次
{n,} 至少n 次

2.4 懶惰限定符

  “*?” 重複任意次,但儘可能少重複

   如 “acbacb” 正則 “a.*?b” 只會取到第一個”acb” 原本可以全部取到但加了限定符後,只會匹配儘可能少的字符 ,而”acbacb”最少字符的結果就是”acb”

  “+?” 重複1次或更多次,但儘可能少重複

   與上面一樣,只是至少要重複1次

  “??” 重複0次或1次,但儘可能少重複

   如 “aaacb” 正則 “a.??b” 只會取到最後的三個字符”acb”

  “{n,m}?” 重複n到m次,但儘可能少重複

      如 "aaaaaaaa"  正則 "a{0,m}" 因爲最少是0次所以取到結果爲空

  “{n,}?” 重複n次以上,但儘可能少重複

      如 "aaaaaaa"  正則 "a{1,}" 最少是1次所以取到結果爲 "a"

| 或
() 捕獲分組
?! 非

“(exp)” 匹配exp,並捕獲文本到自動命名的組裏
“(?exp)” 匹配exp,並捕獲文本到名稱爲name的組裏
“(?:exp)” 匹配exp,不捕獲匹配的文本,也不給此分組分配組號

以下爲零寬斷言
“(?=exp)” 匹配exp前面的位置

  如 “How are you doing” 正則”(?.+(?=ing))” 這裏取ing前所有的字符,並定義了一個捕獲分組名字爲 “txt” 而”txt”這個組裏的值爲”How are you do”;

“(?<=exp)” 匹配exp後面的位置

  如 “How are you doing” 正則”(?(?<=How).+)” 這裏取”How”之後所有的字符,並定義了一個捕獲分組名字爲 “txt” 而”txt”這個組裏的值爲” are you doing”;

“(?!exp)” 匹配後面跟的不是exp的位置

  如 “123abc” 正則 “\d{3}(?!\d)”匹配3位數字後非數字的結果

“(?

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章