正規表示式(1 語法)

2022-09-01 03:21:12 字數 2739 閱讀 1235

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 ...