正規表示式學習筆記一
1、連字元
連字元,一般和[]一起使用,只有連字元在字元組內部,並且出現在兩個字元之間時,才能表示字元的範圍,如果出現在字元組的開頭則只能表示連字元本身。
[]是定義匹配的字元範圍。比如 [a-zA-Z0-9] 表示相應位置的字元要匹配英文字元和數字。[\s*]表示空格或者*號。
2、排除型字元組
在方括號[….]中列出希望匹配的所有字元,這種字元組叫做”普通字元組”.
排除型字元組非常類似普通字元組[…],只是在開方括號[之後緊跟一個脫字元^,即寫作[^….],表示”在當前位置,匹配一個沒有列出的字元 “。
3、點號
.*匹配除換行符以外的任意字元
. 匹配.號本身
在字元組內部.也只能匹配自身
4、字元組[]
在正規表示式中,它表示“在同一個位置可能出現的各種字元”。
5、量詞
作用:限定之前的字元出現次數
程式碼/語法 | 說明 |
---|---|
* | 重複零次或更多次,等價於{0,} |
+ | 重複一次或更多次,等價於{1,} |
? | 重複零次或一次,等價於{0,1} |
{n} | 重複n次 |
{n,} | 重複n次或更多次 |
{n,m} | 重複n到m次 |
量詞只能規定之前字元或字元組的出現次數(只能匹配單個字元)
如果要規定一個字串的出現次數,必須使用括號”()”,在括號內填寫字串,在閉括號之後新增量詞。
6、括號
1、捕獲分組
作用:將括號內的子表示式捕獲的字串存放到匹配的結果中,供匹配完成後訪問。
形式: 使用普通的括號”(…)”。
捕獲分組的注意事項:
1、只要使用了括號,就存在捕獲分組。
2、捕獲分組按照開括號出現的從左到右的順序編號,編號從1開始,遇到括號巢狀的情況也是如此。
3、如果捕獲分組之後存在量詞,則匹配結果中,捕獲分組儲存的是子表示式最後一次的匹配字串。
2、不捕獲文字
如果正規表示式很複雜,或者需要處理的文字很長,捕獲分組會降低效率。
作用:僅僅用來對錶達式分組,而不把分組捕獲的文字存入結果。
形式:”(?:…)”。
3、反向引用
捕獲組(Expression)在匹配成功時,會將子表示式匹配到的內容,儲存到記憶體中一個以數字編號的組裡,可以簡單的認為是對一個區域性變數進行了賦值,這時就可以通過反向引用方式,引用這個區域性變數的值。一個捕獲組(Expression)在匹配成功之前,它的內容可以是不確定的,一旦匹配成功,它的內容就確定了,反向引用的內容也就是確定的了。
反向引用必然要與捕獲組一同使用的,如果沒有捕獲組,而使用了反向引用的語法,不同語言的處理方式不一致,有的語言會拋異常,有的語言會當作普通的轉義處理。
作用:在表示式的某一部分,動態重複之前的子表示式所匹配的文字。
形式:”\1” 其中的1為捕獲分組的編號。
7、錨點
\b 匹配單詞的開始或結束
\b 標識單詞分界符,要求一側是單詞字元,另一側是非單詞字
單詞字元通常指的是英文字元、數字字元,對中文不適用
非單詞字元通常指的是各種標點符號和空白字元
8、環視
程式碼/語法 | 說明 |
---|---|
(?=exp) | 匹配exp前面的位置 |
(?< =exp) | 匹配exp後面的位置 |
(?!exp) | 匹配後面跟的不是exp的位置 |
(?< !exp) | 匹配前面不是exp的位置 |
環視結構僅僅用於布林判斷,位置查詢替換或者分割,結構內的子表示式所匹配的文字,不會儲存在整個表示式的匹配結果之中,所以不能用於字元的獲取。
9、匹配模式
改變某些結構的匹配規定。
形式 | 說明 |
---|---|
I | Case Insensitive 不區分大小寫 |
S | SingleLine(dot All) 點號通配,這裡得dot(點)號是能夠匹配所有的字元,包括換行和回車符 |
M | MultiLine 多行模式 |
X | Comment 註釋模式 |
1、不區分大小寫
作用:在匹配時,不對英文單詞區分大小寫。
2、單行模式
作用:更改點號 “.”的匹配規定,本來預設的匹配模式 “.”號是不會匹配換行和回車的,現在,設定了這個模式也就可以匹配換行符了。
3、多行模式
作用:更改 “^”和 “$”的匹配規定,它們可以匹配字串內部各行文字的開頭和結束位置。
\A和\Z則不受影響。
4、註釋模式
作用:在正規表示式內部可以使用註釋。
形式:註釋以 “#”開頭,以換行符結束(或者直到表示式的末尾)
使用此模式後,會忽略正規表示式中的所有空白字元。
10、模式的作用範圍
作用:精確控制各個模式的作用範圍。
形式:在表示式中,以(?ismx)的方式啟用模式,以(?-ismx)的方式停用模式。
作者:jiankunking 出處:http://blog.csdn.net/jiankunking
相關文章
- JavaScript正規表示式學習筆記(一)JavaScript筆記
- 正規表示式學習筆記筆記
- Python學習筆記 - 正規表示式Python筆記
- Python學習筆記|Python之正規表示式Python筆記
- js加固之正規表示式學習筆記JS筆記
- python 中的正規表示式學習筆記Python筆記
- 正規表示式學習筆記(1)-認識正則筆記
- 工作學習筆記(二) 正規表示式(轉載)筆記
- JavaScript正規表示式學習筆記(二) - 打怪升級JavaScript筆記
- Day1-學習筆記-js之正規表示式筆記JS
- python爬蟲學習筆記4-正規表示式Python爬蟲筆記
- 正規表示式速查筆記筆記
- JS筆記(15): 正規表示式JS筆記
- Go 正規表示式學習Go
- JavaScript正規表示式迷你書-筆記JavaScript筆記
- Python筆記五之正規表示式Python筆記
- 正規表示式學習和練習
- 《正規表示式必知必會》學習筆記以及示例文件筆記
- 如何快速學習正規表示式
- 正規表示式入門學習
- 最容易理解的正規表示式筆記筆記
- 正規表示式例項蒐集,通過例項來學習正規表示式。
- 通過js正規表示式例項學習正規表示式基本語法JS
- java 正規表示式語法學習Java
- 正規表示式學習(2)---字元特性字元
- 學習正規表示式(js、C#)JSC#
- 正規表示式(一)
- 正規表示式複習
- 正規表示式學習筆記(5)- ES6新增及參考連結筆記
- 正規表示式(初學)
- 正規表示式re.compile的學習Compile
- js正規表示式基本語法學習JS
- 從 Vue parseHTML 來學習正規表示式VueHTML
- JS助記 ----- 正規表示式JS
- Python學習筆記 - lambda表示式Python筆記
- learn-regex:正規表示式學習資源
- Golang正則筆記 :使用正規表示式處理題庫文字Golang筆記
- 對正規表示式的一些記錄
- 【記錄】正規表示式入門