正規表示式的符號

2021-09-25 13:55:59 字數 3152 閱讀 3036

表示法

描述正規表示式示例

literal

匹配文字字串的字面值literal

aaare1|re2

匹配正規表示式re1或re2

aaa|bbb

.匹配任何字元(除了\n)

b.b^

匹配字串起始部分

^/bin

$匹配字串結束部分

*.sh$

*匹配0次或者多次前面出現的正規表示式

[0-9]*

+匹配1次或者多次前面出現的正規表示式

[0-9]+

?匹配0次或者1次前面出現的正規表示式

zoo?

匹配n次前面出現的正規表示式

[0-9]

匹配m~n次前面出現的正規表示式

[0-9]

[…]匹配來自字符集的任意乙個字元

[13579]

[…x-y…]

匹配0~9範圍中的任意乙個字元

[0-9]

[^…]

不匹配此字符集**現的任何乙個字元,包括某一範圍的字符集

[abc][0-9a-za-z]

(*|+|?|{})?

用於匹配上面頻繁出現/重複出現符號的非貪婪版本(*、+、?、{})

.*?[a-z]]

(…)匹配封閉的正規表示式,然後另存為子組

([0-9])?,f(oo|o)bar

表示法描述

正規表示式示例

\d匹配任何十進位制數字,與[0-9]一致,(\d與\d相反)

\d+\w

匹配任何字母數字字元,與[0-9a-za-a]一致,(\w與之相反)

\w+\s

匹配任何空格字元,與[\n\r\t\r\v\f] 形同,(\s與之相反)

\s+\b

匹配任何單詞邊界,(\b與之相反)

\bthe\b

\n儲存已儲存的子組n(參看上面的(…))

price:\16

\c逐字匹配任何特殊字元c(即,僅按照字面意思匹配,不匹配特殊含義)

\\,\*,\.

\a(\z)

匹配字串的起始(結束)(另見上面的^和$)

\addd

表示法描述

正規表示式示例

(?ilmsux)

在正規表示式中嵌入乙個或者多個特殊"標記"引數(或者通過 函式/方法)

(?x),(?im)

(?:…)

表示乙個匹配不用儲存的分組

(?:\w+.)*

(?p)

像乙個僅由name標識而不是數字id標識的正則分組匹配

(?p)

(?p=name)

在同一字串中匹配由(?p)分組之前的文字

(?p=data)

(?#…)

表示注釋,所有內容都被忽略

(?#comment)

(?=…)

匹配條件是如果…出現的之後的位置,而不使用輸入字串;稱作正向前視斷言

(?=.com)

(?!..)

匹配條件是如果…不出現的之後的位置,而不使用輸入字串;稱作負向前視斷言

(?!.net)

(?<=…)

匹配條件是如果…出現的之前的位置,而不使用輸入字串;稱作正向後視斷言

(?<=800-)

(?匹配條件是如果…不出現的之前的位置,而不使用輸入字串;稱作正向後視斷言

(?(?(id/name)y|n)

如果分組所提供的id或者name存在,就返回正規表示式的條件匹配y,如果不存在,就返回n;|n是可選項

(?(1)y|x)

這是內聯匹配模式,通常用內聯匹配模式代替使用列舉值regexoptions指定的全域性匹配模式,寫起來更簡潔。

(?i) 表示所在位置右側的表示式開啟忽略大小寫模式

(?s) 表示所在位置右側的表示式開啟單行模式。

注意:(?s)通常在匹配有換行的文字時使用

(?m) 表示所在位置右側的表示式開啟指定多行模式。

更改 ^ 和 $ 的含義,以使它們分別與任何行的開頭和結尾匹配,而不只是與整個字串的開頭和結 尾匹配。

注意:(?m)只有在正規表示式中涉及到多行的「^」和「$」的匹配時,才使用multiline模式。

上面的匹配模式可以組合使用,比如(?is),(?im)。

另外,還可以用(?i:exp)或者(?i)exp(?-i)來指定匹配的有效範圍。

m修飾符規定正規表示式可以執行多行匹配。

m修飾符的作用是修改^和$在正規表示式中的作用,讓它們分別表示行首和行尾。

在預設狀態下,乙個字串無論是否換行只有乙個開始^和結尾$,如果採用多行匹配,那麼每乙個行都有乙個^和結尾$。

ie瀏覽器支援此元字元。

火狐瀏覽器支援此元字元。

谷歌瀏覽器支援此元字元。

例項**:

例項一:

var str="this is an\n antzone good"; 

var reg=/an$/;

console.log(str.match(reg));

以上**不能夠匹配字串"an",儘管"an"後面已經換行了,但是並沒有採用多行匹配,所以不是字串行的結尾。

例項二:

var str="this is an\n antzone good"; 

var reg=/an$/m;

console.log(str.match(reg));

以上**可以匹配字串"an",因為採用了多行匹配。

例項三:

var reg = /^b/;

var str = 'test\nbbs';

execreg(reg,str);

匹配失敗,因為字串的開頭沒有b字元。但是加上m修飾符之後:

例項四:

var reg = /^b/m;

var str = 'test\nbbs';

execreg(reg,str);

匹配到b,因為加了m修飾符之後,^已經表示行首,由於bbs在字串第二行的行首,所以可以成功地匹配。

參考:[1]: python核心程式設計(第三版) [美]wesley chun著,孫波翔,李斌,李晗 譯

[2]:

[3]:

正規表示式符號

字元描述 將下乙個字元標記為乙個特殊字元 或乙個原義字元 或乙個 向後引用 或乙個八進位制轉義符。例如,n 匹配字元 n n 匹配乙個換行符。序列 匹配 而 則匹配 匹配輸入字串的開始位置。如果設定了 regexp 物件的 multiline 屬性,也匹配 n 或 r 之後的位置。匹配輸入字串的結束...

正規表示式符號

字元描述 將下乙個字元標記為乙個特殊字元 或乙個原義字元 或乙個 向後引用 或乙個八進位制轉義符。例如,n 匹配字元 n n 匹配乙個換行符。序列 匹配 而 則匹配 匹配輸入字串的開始位置。如果設定了 regexp 物件的 multiline 屬性,也匹配 n 或 r 之後的位置。匹配輸入字串的結束...

正規表示式符號

字元 描述 標記下乙個字元是特殊字元或文字。例如,n 和字元 n 匹配。n 則和換行字元匹配。序列 和 匹配,而 則和 匹配。匹配輸入的開頭。匹配輸入的末尾。匹配前乙個字元零或多次。例如,zo 與 z 或 zoo 匹配。匹配前乙個字元一次或多次。例如,zo 與 zoo 匹配,但和 z 不匹配。匹配前...