正則匹配查詢 正規表示式學習筆記(二) 元字元

2021-10-14 17:15:12 字數 3216 閱讀 4951

元字元是正規表示式的靈魂,它們雖然為數不多,但正是這些「小精靈」們構成了可實現各種各樣功能的正規表示式,為了對它們進行深入理解,我將在文中對每一種元字元都舉例說明,儘管這樣一來篇幅顯得較長,但對於那些願意一起學習的同學而言,多動手來練習一下文中的**,相信一定會對這些元字元有更深的印象。在正規表示式中,要匹配以某個字元開頭的字串,是用^這個符號,這個符號很多教材上稱之為脫字元,要匹配以某個字元結尾,是用$,這個符號叫做美元符號。

比如我們要在一行文字中查詢某個單詞,用perl語句可以這樣表示:

在上述perl程式中,=~是匹配符號,m/.../是表示其中的字串是正規表示式,在這一小段**中,之所以查詢成功,是由於我們給出的變數只有乙個單詞hello,如果將變數設定為hello world!,那麼程式就無法匹配成功,因為修改後的文字儘管是以h開頭,並且之後的幾個字元ell都分別匹配成功,但卻不是以字元o結尾,因此無法匹配成功。

從這個小例子可以看出,^$符號是一行字串的起止符,並非一行字串中某個單詞的起止符。

python中的re正則包表示如下:

從上述輸出結果可以看出,同樣的正規表示式在python中也是可以匹配成功的,但更改一下value值,則無法匹配到結果:

在正規表示式中,字元組是乙個很重要的概念,它是一組字元的組合,用中括號括起來,在中括號裡面可以是任意的字元組合,比如在一篇文章中,由於某人習慣性手誤,會把hello寫成hella,在校對時,需要將所有hella和所有hello查詢出來進行格式設定,則正規表示式可以這樣寫:

python則如下表示:

關於字元組要注意的是,它是單個字元的組合

另外,還有一種簡便方法來書寫字元組,比如要匹配的是單個數字,則可以這樣書寫:[0-9],它表示[0123456789],其中的-叫做連字元,它只對一類連續的字元起作用,比如要匹配小寫字母,我們可以這樣寫[a-z],類似地,大寫字母可以這樣寫[a-z],甚至我們可以對其進行任意組合:[0-5a-mc-f]

然而,當連字元-位於字元組第乙個位置時,它只是相當於乙個普通的字元,例如[-12],它只匹配-、1、2這三個字元。

甚至如果將不具備連續性質的字母用-連線起來,從形式上看,-雖然起到連字元的作用,但由於前後字元不連續,因此程式會報錯,比如:

有時候我們可能會在查詢特定字串時,排除某個特定位置的字元,比如要在hello5 world中查詢含有hello但其結尾不是以數字結尾的單詞,給定的這個示例中沒有滿足條件的單詞,匹配**書寫如下:

如果將變數的值更改為hellot world,則會查詢成功,python**示例如下:

從上述**中可知,在字元組中,當第乙個字元是^時,則表示該字元組中的其它所有字元不應該被匹配,但要注意,既然在正規表示式中新增了這個排除字元組,那它意味著該位置必須有乙個字元,如果變數更改為hello,則用上述例子中的正規表示式無法匹配成功:

在正規表示式中,.這個符號稱為點號,它可以匹配任意字元,因此當需要查詢乙個位置是否有字元,只需要用它來查詢即可,當給出的字串是空時,它會提示匹配不成功,perl**如下:

$value = '';if ($value =~ m/./)else
python中,返回的是空列表:.在日常應用很廣,比如小數點,比如數字ip位址分隔符等,這時我們可以用字元組來實現匹配:

本文介紹了正規表示式的三種元字元,分別是行起止符、字元組和點號,並針對每一種元字元均給出了一些例子,其中,字元組這個概念非常重要,它在我們今後的規則編寫中起著極其重要的作用。

MySQL sql模糊查詢正規表示式

mysql使用regexp函式,如 select from course c where c.t id regexp 0 2 1.正規表示式元字元說明 元字元含義 匹配輸入字串的開始位置。匹配輸入字串的結尾位置。匹配前面的字元零次或多次。匹配前面的字元一次或多次。匹配前面的字元零次或一次。匹配任何字...

學習筆記15 正規表示式匹配

題目 請實現乙個函式用來匹配包含 和 的正規表示式。模式中的字元 表示任意乙個字元,而 表示它前面的字元可以出現任意次 含0次 在本題中,匹配是指字串的所有字元匹配整個模式。例如,字串 aaa 與模式 a.a 和 abaca 匹配,但與 aa.a 及 aba 均不匹配。思路 每次從字串裡拿出乙個字元...

正規表示式 匹配

字串 void abtr quint32 ab 表示乙個正規表示式 template class bidirectionaliterator class allocator std allocator sub match bidirectionaliterator class match resul...