1.正規表示式:
- 一種靈活而強大的文字處理工具
- 大部分程式語言,資料庫,文字編輯器,開發環境都支援正規表示式。
- 正規表示式描述了一種規則,通過這個規則可以匹配一類字串
2.測試正則的工具:regexbuddy
3.正規表示式的語法:
1.普通字元:字母,數字,下劃線,以及沒有特殊定義的標點符號,都是普通字元。表示式中的普通字元,在匹配字串的時候,
匹配與之相同的乙個字元。
2.轉義字元:\n 代表換行符
\t 製表符
\\ 代表\本身
\^ 代表^(例子)
3.標準字元集合
- 能夠和多種字元匹配的表示式
- 注意區分大小寫,大寫是相反的意思
\d:任意乙個數字,0~9中的任意乙個
\w:任意乙個字母或者數字或者下劃線,也就是a~z,a~z,0~9,_,中任意乙個
\s:包括空格,製表符,換行符等空白字元的其中任意乙個
.:可以匹配任意乙個字元,如果要匹配包括\n在內的所有字元,一般使用[\s\s]
4.自定義字元集合
- 方括號匹配方式,能夠匹配方括號中任意乙個字元
[ab5@]:匹配a或b或5或者@
[^abc]:匹配a,b,c之外的任意乙個字元
[f-k]:匹配f~k之間的任意乙個字母
[^a-f0-3]:匹配a~f,0~3之外的任意乙個字元
- 正規表示式的特殊符號,被包含到中括號裡面,則失去特殊含義,除了^和-
- 標準字元集合,除了小數點(.),如果被包含於中括號中,自定義字元集合將包含該集合
例如:[\d.\-+] 則代表數字,小數點,+號和-號
5.量詞
:表示式重複n次
:表示式最少重複m次,最多重複n次
:表示式至少重複m次
?:匹配表示式0次或者1次,相當於
+:表示式至少出現1次,相當於
*:表示式不出現,或者出現任意次,相當於
- 貪婪模式:匹配字元越多越好,這是預設的。例如\d,會優先匹配5個字元。
6.字元邊界
- 字元邊界標記匹配的是乙個位置而不是乙個字元,這裡的位置是指符合某種條件的位置
^:與字串開始的地方匹配 例:i love u 想要匹配i 可以寫^i(表示i的左邊是乙個字串開始的地方)
$:與字串結束的地方匹配 例:i love u uu u 想要匹配最後乙個u 可以寫u$(表示u的右邊是乙個字串結束的地方)
\b:匹配乙個單詞邊界 :意思就是前面的字元和後面的字元不全是\w 例:正則(yangf\b) 可以匹配 yangf 123yangf yangf.23 即在yangf後面不是\w的都可以。
注意,不全是的含義就是 全是和全不是都不匹配。
7.正規表示式的匹配模式
- ignorecase 忽略大小寫模式
- 匹配時忽略大小寫
- 預設情況下,正則是區分大小寫的
- singleline 單行模式
- 整個文字看做乙個字串,只有乙個開頭乙個結尾
- 使小數點可以匹配包含換行符(\n)在內的任意字元
- multiline 多行模式
- 每行都是乙個字串,都有開頭和結尾
- 在指定了multiline之後,如果需要僅匹配字串的開始和結束位置,可以使用\a和\z
8.選擇符和分組
- |(分支結構):左右兩邊表示式之間 「或」關係,匹配左邊或者右邊
- ()捕獲組: 1.在被修飾匹配次數的時候,括號中的表示式可以作為整體被修飾
2.取匹配結果的時候,括號中的表示式匹配到的內容可以被單獨得到
3.每一對括號會分配乙個編號,使用()的捕獲根據左括號的順序從1開始自動編號。捕獲元素編號為0的第乙個捕獲是
由整個正規表示式模式匹配的文字。
- (?:expression)非捕獲組: 一些表示式中,不得不使用(),但又不需要儲存()中子表示式匹配的內容,這時可以用非捕獲組來抵消使用()
帶來的***。 例如:(?:[a-z]),這樣不會把捕獲到的內容放到記憶體中。
- 反向引用:(\nnn) \nnn代表第nnn個括號代表的內容,以左括號為準。 例:(1(2) (3))
- 每一對()會分配乙個編號,使用()的捕獲根據左括號的順序從1開始自動編號
- 通過反向引用,可以對分組已捕獲的字串進行引用 例:從gogo goto toto dodo todo 中獲取gogo toto dodo 的正則 ([a-z])\1,([a-z])捕獲到go to do,
反向引用\1,再重複一次。
9.預搜尋(零寬斷言)
- 只進行子表示式的匹配,匹配內容不計入最終的匹配結果,是零寬度。
- 這個位置應該符合某個條件。判斷當前位置的前後字元,是否符合指定條件。
- 正規表示式匹配過程中,如果子表示式匹配到的是字元內容而不是字元位置,並且被儲存到最終的匹配結果中,那麼就認為這個子表示式是占有字元的。如果子表示式匹配的僅僅
是位置,或者匹配內容不儲存到最終的匹配結果中,那麼就認為這個子表示式是零寬度的。占有字元還是零寬度,是針對匹配的內容是否儲存到最終的匹配結果中而言的。
1.(?=exp):斷言自身出現的位置的後面能匹配表示式exp 例:從going doing eating中匹配go do eat的正則[a-z]+(?=ing)
2.(?<=exp):斷言自身出現的位置的前面能匹配表示式exp
3.(?!exp):斷言此位置的後面不能匹配表示式exp
4.(?<!exp):斷言此位置的前面不能匹配表示式exp
正規表示式語法
jscript 8.0 正規表示式語法 正規表示式是一種文字模式,包括普通字元 例如,a 到 z 之間的字母 和特殊字元 稱為 元字元 模式描述在搜尋文字時要匹配的乙個或多個字串。表示式 匹配 s 匹配空行。d d 驗證由兩位數字 乙個連字元再加 5 位數字組成的 id 號。s s 匹配 html ...
正規表示式語法
下面是正規表示式的一些示例 表示式 匹配 s 匹配空行。例如,abc 匹配 plain 中的 a 向字符集。匹配未包含的任何字元。例如,abc 匹配 plain 中的 p cx 匹配由 x 指示的控制字元。正規表示式是一種文字模式,包括普通字元 例如,a 到 z 之間的字母 和特殊字元 稱為 元字元...
正規表示式語法
正規表示式是一種文字模式,包括普通字元 例如,a 到 z 之間的字母 和特殊字元 稱為 元字元 模式描述在搜尋文字時要匹配的乙個或多個字串。正規表示式示例 表示式 匹配 s 匹配空行。d d 驗證由兩位數字 乙個連字元再加 5 位數字組成的 id 號。s s s s s s 1 s 匹配 html ...