淺析正則表達式
正則表達式目前在很多軟件中得到廣泛應(yīng)用,包括Linux, Unix等操作系統(tǒng),VBScript, Java, PHP等開發(fā)環(huán)境,以及很多應(yīng)用軟件都能應(yīng)用到正則表達式。
1正則表達式的歷史1956年,一位叫Stephen Kleene的數(shù)學(xué)家在McCulloch和Pitts早期工作的基礎(chǔ)上,發(fā)表了一篇標(biāo)題為"神經(jīng)網(wǎng)事件的表示法"的論文,引入了正則表達式的概念。正則表達式就是用來描述他稱為"正則集的代數(shù)"的表達式,因此采用"正則表達式"這個術(shù)語。
隨后,發(fā)現(xiàn)可以將這一工作應(yīng)用于使用Ken Thompson的計算搜索算怯的一些早期研究,Ken Thompson是Unix的主要發(fā)明人。正則表達式的第一個實用應(yīng)用程序就是Unix中的qed編輯器。從那時起直至現(xiàn)在正則表達式都是基于文本的編輯器和搜索工具中的一個重要部分。
2正則表達式定義正則表達式描述了一種字符串匹配的模式,可以用來檢查一個串是否含有某種子串、將匹配的子串做替換或者從某個串中取出符合某個條件的子串等。
列目錄肘,dir*. exe中的*.exe就不是一個正則表達式,因為這里*與正則式的*的含義是不同的。則表達式是由普通字符(a-z)以及特殊字符(也叫元字符)組成的文字模式。正則表達式作為一個模板,將某個字符模式與所搜索的字符串進行匹配。
2.1普通字符囪所有那些未顯式指定為元字符的打印和非打印字符組成。這包括所有的大寫和小寫字母字符,所有數(shù)字,所有標(biāo)點符號以及一些符號。
2.2特殊字符
特殊字符,指有特殊含義的字符,如上面說的"*.exe"中的*,簡單的說就是表示任何字符串的意思。如果要查找文件名中有*的文件,則需要對*進行轉(zhuǎn)義,即在其前加一個\。Is \*.exe。
正則表達式里的特殊字符$,(),*,+,.,[,?,\^\|
$匹配輸入字符串的結(jié)尾位置。()標(biāo)記一個子表達式的開始和結(jié)束位置。
匹配前面的子表達式零次或多次。+匹配前面的子表達式一次或多次。
.匹自己除換行符\n之外的任何單字符。{標(biāo)記一個中括號表達式的開始。
?匹配前面的子表達式零次或一次。{標(biāo)記限定符表達式的開始。
\將下一個字符標(biāo)記為或特殊字符、或原義字符、或向后引用、或八進制轉(zhuǎn)義符。
^匹配輸入字符串的開始位置,除非在方括號表達式中使用,筆耕文化傳播,此時它表示不接受該字符集合。|指明兩項之間的一個選擇。
2.3限定符限定符用來指定正則表達式的一個給定組件必須要出現(xiàn)多少次才能滿足匹配。
有*,+,?, {n}, {n,}, {n, m}共6種。
*匹配前面的子表達式零次或多次。{n}
+匹配前面的子表達式一次或多次。?匹配前面的子表達式零次或一次。
{n} n是一個非負整數(shù)。匹配確定的n次。
{n,}且是一個非負整數(shù)。至少匹配n次。
{n,m} m和n均為非負整數(shù),且n<=m。最少匹配n次且最多匹配m次。
2.4定位符用來描述字符串或單詞的邊界, ^和$分別指字符串的開始與結(jié)束,\b描述單詞的前或后邊界,\B表示非單詞邊界。不能對定位符使用限定符。
本文由整理發(fā)布,轉(zhuǎn)載請注明出處!
本文編號:5634
本文鏈接:http://www.wukwdryxk.cn/qitalunwen/5634.html