之前對正則表達(dá)式一直覺得很麻煩就沒怎么研究,用的時(shí)候大都百度,有些表達(dá)式照搬過來也沒弄懂意思。然終是一塊短板,一日不搞清楚,便一日惴惴不安。遂學(xué)習(xí)總結(jié)如下。1.元字符 舉例:在一篇文章中查找 hi 精確正則查找:\bhi\b \b 是正則表達(dá)式規(guī)定的一個(gè)特殊代碼(元字符),代表單詞的開頭或者結(jié)尾,就是單詞的分界處。只匹配一個(gè)位置。
如果找的是“hi后面不遠(yuǎn)處跟著的一個(gè)Lucy”,應(yīng)該使用\bhi\b.*\bLucy\b . 是另一個(gè)元字符,匹配“除了換行符以外的任意字符”。
* 也是元字符,不過既不是位置也不是字符,而是數(shù)量:指定其前邊的內(nèi)容可以連續(xù)重復(fù)使用任意次,使整個(gè)表達(dá)式得到匹配。
所以.* 連在一起表示:任意數(shù)量的不包含換行的字符。 \bhi\b.*\bLucy\b 的意思是:先是一個(gè)單詞hi,然后是任意個(gè)任意字符(但不能換行),最后是Lucy這個(gè)單詞。
舉例:0\d\d-\d\d\d\d\d\d\d\d 表示意思:以0開頭,然后是兩個(gè)數(shù)字,然后是一個(gè)連字號“-”,最后是8個(gè)數(shù)字。 \d 是個(gè)新的元字符,匹配“一位數(shù)字(0,1,2,3.........)”
- 不是元字符,匹配其本身,“連字符”
另一種簡潔寫法:0\d{2}-\d{8} ,'\d'后面的{2}{8}表示前面的\d 必須連續(xù)重復(fù)匹配2次(8次) \s 匹配任意的空白符,包括空格,制表符(tab),換行符,中文全角空格等。
\w 匹配'字母或數(shù)字或下劃線或漢字等'
\ba\w*\b 匹配“以字母a開頭的單詞,先是某個(gè)單詞開始處(\b),然后是字母a,然后是任意數(shù)量的字母或數(shù)字,最后是單詞結(jié)束處(\b)”
\d+ 匹配'一個(gè)或更多連續(xù)的數(shù)字'。。+ 匹配重復(fù)任意次(可能是0次),而+ 匹配 重復(fù)1次或更多次。
重復(fù)0次或1次
\b\w{6}\b 匹配剛好6個(gè)字符的單詞。
^ 元字符匹配字符串的開始。
$ 元字符匹配字符串的結(jié)束。
舉例:qq號(5到12位的數(shù)字) ^\d{5,12}$ {5,12}表示'重復(fù)的次數(shù)不能少于5次,也不能多于12次' 2.字符轉(zhuǎn)義查找元字符本身時(shí),使用\ 比如查找- ,\- ;查找\ ,\\ . 3.字符類如果要匹配的內(nèi)容沒有被預(yù)設(shè)出來,只需要在方括號里列出它們就ok了。 [.?!] 匹配標(biāo)點(diǎn)符號“.?!”
舉例:\(?0\d{2}[)-]?\d{8} ,匹配幾種電話格式。 4.分枝條件正則表達(dá)式里的分枝條件指如果有好幾種規(guī)則,如果滿足其中任意一種規(guī)則都應(yīng)該當(dāng)成匹配。 具體用法是用| 把不同的規(guī)則分隔開。 舉例子: 0\d{2}-\d{8}|0\d{3}-\d{7} :匹配兩種以連字號分隔的電話號碼:一種是三位區(qū)號,8位本地號(如010-12345678),一種是4位區(qū)號,7位本地號(0376-2233445)。 5.反義查找不屬于某個(gè)能簡單定義的字符類的字符。舉例“查找除了數(shù)字以外,其他任意字符都行的情況”:\D 。。。注意是大寫字母 \W :匹配任意不是字母,數(shù)字,下劃線,漢子的字符
\S :匹配任意不是空白符的字符
\D :匹配任意非數(shù)字的字符
\B :匹配不是單詞開頭或結(jié)束的位置
[^x] :匹配除了x以外的任意字符
]+> :匹配用尖括號括起來的以a開頭的字符串
記錄此文是檢驗(yàn)自己對正則的掌握程度,也方便以后查閱。還有一些相關(guān)的知識,比如后向引用,零寬斷言等未列出。欲詳細(xì)了解的童鞋可以去查閱這篇博客:正則表達(dá)30分鐘入門教程
|