本來只有一個(gè)問題,當(dāng)你使用正則表達(dá)式時(shí),就變成了兩個(gè)問題
我們在處理網(wǎng)頁文本時(shí),經(jīng)常會有查找符合某些規(guī)則的字符串的需要。正則表達(dá)式就是用于描述這些規(guī)則的工具。它是由普通字符和元字符組成的文字模式。而模式是用于描述在搜索文本時(shí)要匹配的一個(gè)或多個(gè)字符串。正則表達(dá)式作為一個(gè)模板,將摸個(gè)字符模式與所搜索的字符串進(jìn)行匹配。
- 基本語法與使用
先來看幾個(gè)例子
1.1 入門小例子
學(xué)習(xí)正則表達(dá)式最好的辦法就是通過例子,當(dāng)然任何事物都是這樣。
例如我們想找到一篇英文文獻(xiàn)中所有的we單詞,你可以使用正則表達(dá)式:we,這是最簡單的正則表達(dá)式,可以精確匹配想要的單詞。正則表達(dá)式工具一般可以設(shè)置為忽略大小寫,那we這個(gè)正則表達(dá)式可以將文獻(xiàn)中的we、wE、We、和WE都匹配處理。如果僅僅使用we來匹配,會發(fā)現(xiàn)的出來的記過和預(yù)想的不一樣,類似于well、welcome這樣的單詞也會被匹配出來,因?yàn)檫@些單詞中也包含we。如何僅僅將we單詞匹配出來呢?我們需要使用這樣的正則表達(dá)式:\bwe\b。
"\b"是正則表達(dá)式規(guī)定的一個(gè)特殊代碼,被稱為“元字符”,代表著單詞的開頭或結(jié)尾,也就是單詞的分解出,它不帶包英語中空格、標(biāo)點(diǎn)符號、換行等單詞分隔符,知識用來匹配一個(gè)位置,他的寬度是0,也叫零寬定界符。
假如我們看到we單詞不遠(yuǎn)處有個(gè)work單詞,想把we、work和他們之間的所有內(nèi)容都匹配出來,那么我們需要了解另外兩個(gè)“元字符”,"."和"",正則表達(dá)式可以寫為"\bwe\b.\bwork\b" 。"."的含義是匹配除了換行符"\n"的任意字符,""不是代表字符,而是代表匹配的數(shù)量,含義是匹配其前面的內(nèi)容0次或任意次。"."整體的意思就是匹配當(dāng)前行所有字符,"\bwe\b.*\bwork\b"作用就是先匹配出單詞we,接著當(dāng)前行匹配任意字符,直到匹配到單詞"word"結(jié)束。
- 常用的元字符
元字符主要有以下四種作用:
- 匹配字符
- 匹配位置
- 匹配數(shù)量
- 匹配模式
| 元字符 | 含義 |
|---|---|
| . | 匹配除換行符以外的任一字符 |
| \b | 匹配單詞的開始或結(jié)束(零寬定界符) |
| \d | 匹配數(shù)字 |
| \w | 匹配字母、數(shù)字、劃線或漢字 |
| \s | 匹配任意空白符,包括空格、Tab、換行符、中文全角空格等 |
| ^ | 匹配字符的開始,在[]中表示非選擇 |
| $ | 匹配字符串的結(jié)束 |