正規表示式基礎知識

2021-06-18 03:13:20 字數 3767 閱讀 8828

正規表示式基礎知識

我們先從簡單的開始。假設你要搜尋乙個包含字元「

cat」的字串,搜尋用的正規表示式就是「

cat」。如果搜尋對大小寫不敏感,單詞「

catalog

」、「catherine

」、「sophisticated

」都可以匹配。也就是說:

正規表示式:

cat

匹配:cat

,catalog

,catherine

1.1句點符號

假設你在玩英文拼字遊戲,想要找出三個字母的單詞,而且這些單詞必須以「

t」字母開頭,以「

n」字母結束。另外,假設有一本英文本典,你可以用正規表示式搜尋它的全部內容。要構造出這個正規表示式,你可以使用乙個萬用字元——句點符號「

.」。這樣,完整的表示式就是「

t.n」,它匹配「

tan」、「

ten」、「

tin」和「

ton」,還匹配「

t#n」、「

tpn」甚至「

t n」,還有其他許多無意義的組合。這是因為句點符號匹配所有字元,包括空格、

tab字元甚至換行符:

正規表示式:

t.n

匹配:tan,

ten,

tin,

ton,

t n,

t#n,

tpn等

1.2方括號符號

為了解決句點符號匹配範圍過於廣泛這一問題,你可以在方括號(「

」)裡面指定看來有意義的字元。此時,只有方括號裡面指定的字元才參與匹配。也就是說,正規表示式「

t[aeio]n

」只匹配「

tan」、「

ten」、「

tin」和「

ton」。但「

toon

」不匹配,因為在方括號之內你只能匹配單個字元:

正規表示式:

t [ aeio ] n

匹配:tan,

ten,

tin,

ton

1.3「或」符號

如果除了上面匹配的所有單詞之外,你還想要匹配「

toon

」,那麼,你可以使用「

|」操作符。「

|」操作符的基本意義就是「或」運算。要匹配「

toon

」,使用「

t(a|e|i|o|oo)n

」正規表示式。這裡不能使用方擴號,因為方括號只允許匹配單個字元;這裡必須使用圓括號「

()」。圓括號還可以用來分組,具體請參見後面介紹。

正規表示式:

t ( a | e | i | o | oo ) n

匹配:tan,

ten,

tin,

ton,

toon

1.4表示匹配次數的符號

表一顯示了表示匹配次數的符號,這些符號用來確定緊靠該符號左邊的符號出現的次數:

表示次數的符號

符號次數

*

零次或多次

+

一次或多次

?

零次或一次

n次從n

次到m次

假設我們要在文字檔案中搜尋美國的社會安全號碼。這個號碼的格式是

999-99-9999

。用來匹配它的正規表示式如圖一所示。在正規表示式中,連字元(「

-」)有著特殊的意義,它表示乙個範圍,比如從0到

9。因此,匹配社會安全號碼中的連字符號時,它的前面要加上乙個轉義字元「\」。

連線字元

[0-9] \- [0-9] \- [0-9]

前三個數字

假設進行搜尋的時候,你希望連字符號可以出現,也可以不出現——即,

999-99-9999

和999999999

都屬於正確的格式。這時,你可以在連字符號後面加上「?」數量限定符號

可選的連線字元

[0-9] \-? [0-9] \-? [0-9]

前三個數字

下面我們再來看另外乙個例子。美國汽車牌照的一種格式是四個數字加上二個字母。它的正規表示式前面是數字部分「

[0-9]

」,再加上字母部分「

[a-z]

」。正規表示式。

[0-9] [a-z]

前四個數字

後了個字母

1.5

「否」符號

「^」符號稱為「否」符號。如果用在方括號內,「

^」表示不想要匹配的字元。例如,圖四的正規表示式匹配所有單詞,但以「

x」字母開頭的單詞除外。

[^x][a-z]+

第乙個字母

後續字元可以是a到

z

不能為『x』

之間的任意字母

1.6

圓括號和空白符號

假設要從格式為「

june 26, 1951

」的生日日期中提取出月份部分,用來匹配該日期的正規表示式

必需的空格

必需的逗號

年份值[a-z]+\s+[0-9],\s*[0-9]

月份值至少

月份內的日期

可選的空格

乙個字元

乙個或兩個數字

新出現的「

\s」符號是空白符號,匹配所有的空白字元,包括

tab字元。如果字串正確匹配,接下來如何提取出月份部分呢?只需在月份周圍加上乙個圓括號建立乙個組,然後用

oro api

(本文後面詳細討論)提取出它的值。修改後的正規表示式

必需的空格

必需的逗號

年份值([a-z]+)\s+[0-9],\s*[0-9]

月份值

月份內的日期

可選的空格

第乙個組

乙個或兩個數字

1.7其它符號

為簡便起見,你可以使用一些為常見正規表示式建立的快捷符號。

常用符號

符號等價的正規表示式

\d

[0-9]

\d

[^0-9]

\w

[a-z0-9]

\w

[^a-z0-9]

\s

[\t\n\r\f]

\s

[^\t\n\r\f]

例如,在前面社會安全號碼的例子中,所有出現「

[0-9]

」的地方我們都可以使用「

\d」。修改後的正規表示式

\d

\- \d

\- \d

0

給主人留下些什麼吧!~~

正規表示式基礎知識

我們先從簡單的開始。假設你要搜尋乙個包含字元 cat 的字串,搜尋用的正規表示式就是 cat 如果搜尋對大小寫不敏感,單詞 catalog catherine sophisticated 都可以匹配。也就是說 1.1 句點符號 假設你在玩英文拼字遊戲,想要找出三個字母的單詞,而且這些單詞必須以 t ...

正規表示式基礎知識

乙個正規表示式就是由普通字元 例如字元 a 到 z 以及特殊字元 稱為元字元 組成的文字模式。該模式描述在查詢文字主體時待匹配的乙個或多個字串。正規表示式作為乙個模板,將某個字元模式與所搜尋的字串進行匹配。如 jscript vbscript 匹配 t t 匹配乙個空白行。d d d d 驗證乙個i...

正規表示式基礎知識

正規表示式基礎知識 正規表示式是一種可以用於模式匹配和替換的強有力的工具,乙個正規表示式就是由普通的字元 例如字元 a 到 z 以及特殊字元 稱為元字元 組成的文字模式,它描述在查詢文字主體時待匹配的乙個或多個字串。正規表示式作為乙個模板,將某個字元模式與所搜尋的字串進行匹配。正規表示式在字元資料處...