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