正規表示式 正則入門

2021-10-21 02:25:48 字數 3612 閱讀 9486

先從乙個例子開始正規表示式。

書寫乙個匹配手機號的正規表示式,為了方便討論,假定手機號是1開頭,第二位只能是3、5、8中的其中乙個,總共11位的數字,形如13*********。

匹配手機號的正規表示式為:^1[358]\d$,下面介紹此正規表示式中的各個符號的含義。

^:表示字串的開頭,後面緊接著1,表示匹配的字串要以"1"開頭。

1:就是匹配「1」本身,^不匹配字元,所以1就是匹配字串的第乙個字元。

[358]:表示可以匹配3、5、8中的任何乙個,當然,也只能匹配乙個字元;[abc]整個表示式用來匹配乙個字元,這個被匹配字元可以是abc中的任乙個。

\d:表示乙個數字字元,等同於[0123456789],匹配0123456789中的任何乙個數字,[0123456789]也可以寫作[0-9]

:表示前面的\d重複9次,即有9個數字。重複次數可以設定範圍值或是最小值,表示前面的元素或是表示式最少重複m次,最多重複n次;表示前面的元素或是表示式最少重複m次,不設定最大重複次數。

$:表示字串的結尾,它前面的\d數字重複9次後,後面就不能再有字元了。

如上圖所示,13666666666符合正規表示式^1[358]\d$

"13666666666"的第一位數字1,匹配正規表示式中的^1,以數字1開頭;第二位數字3匹配表示式中的[358],屬於3、5、8中的乙個;第三位至第十一位的9個數字,匹配表示式中的\d;第十一位數字後不再有字元,匹配表示式$

"13"匹配表示式中的^1[358],不匹配\d,後續沒有9個數字;"71366666666"不匹配^1,沒有以數字1開頭;"136666666666"匹配^1[358]\d,不匹配$,9個數字後還有數字;"abf"不匹配^1,沒有以數字1開頭。

想要匹配字串"abc"中的a,正規表示式a即可完成任務。在正規表示式中,可以使用字母或是數字,匹配其本身。正規表示式大小寫敏感。

在正則中,.(英文句點)可以用來匹配任意字元(換行符除外),包括它自己。

正規表示式[an]表示匹配a或者n,中的字元可以理解為是"或"的關係。

在中可以使用區間表示式,例如[0-9]表示匹配0到9的數字,即所有數字;[a-z]表示匹配所有小寫英文本母,[a-z]表示匹配所有大寫英文本母,[a-f]表示匹配a-f的所有小寫字母。

有時我們希望不要匹配到某些字元,此時也可以用。例如[^abcdef]表示不匹配abcdef中的任何乙個,其他字元都可以,有些類似於取反。

同樣的,字元區間一樣可以用於取反操作。

需要注意的是,中的^作用範圍是整個。例如[^a-f0-9]表示不能匹配a-f的小寫字母以及0-9的所有數字。

之前提到過,.可以匹配所有單個字元(換行符除外),如果只是想匹配".「本身呢?此時只需要在」.「前面加乙個轉義符」\「即可,即正規表示式\.

同樣的,之前提到的」["、"]「也可以通過加轉義符來匹配本身,\[\]。」\"同樣可以通過轉義來匹配其本身,\\

其他常用元字元如下:

空白元字元

含義\f

換頁符\n

換行符\r

回車符\t

製表符(tab鍵)

\v垂直製表符

元字元含義\d

任何乙個數字字元(等價於[0-9])

\d任何乙個非數字字元(等價於[^0-9])

\w任何乙個單詞字元(數字,大小寫字母,下劃線)(等價於[0-9a-za-z_])

\w任何乙個非單詞字元(即非數字,非大小寫字母,非下劃線)(等價於[^0-9a-za-z_])

\s任何乙個空白字元(等價於[\f\n\r\t\v])

\s任何乙個非空白字元(等價於[^\f\n\r\t\v])

之前說的都是匹配乙個字元,現在說一下如何重複匹配乙個字元。

\d+表示匹配\d一次或多次

\d*表示匹配\d零次、一次或多次

\d?表示匹配\d零次或一次

除了+、*、?可以重複匹配外,還可以使用{}進行更精確的重複匹配次數控制。

\d表示\d最少匹配三次,最多匹配五次

\d表示\d最少匹配三次,最大匹配次數不做限制

\d表示\d匹配三次

\b表示匹配單詞邊界,也就是乙個位置,此位置一邊是單詞字元(\w代表的內容,即數字,大小寫字母,下劃線_),另一邊不是單詞字元。可以看到,字串"23 word on"共有六個位置屬於單詞邊界。

^表示匹配字串開頭,字串"23 word on"只有乙個位置匹配成功。"^「用在」"中時表示取反,否則是匹配字串開頭。

$表示匹配字串結尾,字串"23 word on"只有乙個位置匹配成功。

本文主要介紹了正規表示式中,匹配乙個字元,匹配一組字元中的乙個,什麼是元字元,如何控制重複匹配,最後學習了幾個簡單的位置匹配。

精通正規表示式 1 正規表示式入門

1 能檢查多個檔案,挑出包含重複單詞的行,高亮標記每個重複單詞 使用標準ansi的轉義字元列 同時必須顯示這行文字來自哪個檔案。2 能跨行查詢,即使兩個單詞乙個在某行末尾而另乙個在下一行的開頭,也算重複單詞。3 能進行不區分大小寫的查詢,例如 the the.重複單詞之間可以出現任意數量的空白字元 ...

正規表示式入門

對於文字字元,有11個字元被保留作特殊用途。他們是 這些特殊字元也被稱作元字元 不可顯示字元 可以使用特殊字串行來代表某些不可顯示字元 代表tab 0x09 代表回車符 0x0d 代表換行符 0x0a 字符集 字符集是由一對方括號 括起來的字元集合。使用字符集,你可以告訴正規表示式引擎僅僅匹配多個字...

正規表示式入門

老師說過 正規表示式就是用字串讀取字串!學習正規表示式的最好方法是從例子開始,理解例子之後再自己對例子進行修改,實驗。下面給出了不少簡單的例子,並對它們作了詳細的說明。假設你在一篇英文 裡查詢hi,你可以使用正規表示式hi。這幾乎是最簡單的正規表示式了,它可以精確匹配這樣的字串 由兩個字元組成,前乙...