国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 語(yǔ)言 > PHP > 正文

使用Perl常規(guī)表達(dá)式進(jìn)行匹配

2024-09-04 11:47:09
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

長(zhǎng)期以來(lái),Perl以其對(duì)常規(guī)表達(dá)式的固有支持,一直是非常流行的文本處理工具。在這篇入門性文章中,我們將帶領(lǐng)你簡(jiǎn)單了解如何在你自己的程序中使用常規(guī)表達(dá)式,實(shí)現(xiàn)更加強(qiáng)大的文本搜索和替代功能。

我們首先了解最簡(jiǎn)單的常規(guī)表達(dá)式:匹配。假如在字符串中找到相匹配的模式,匹配操作就返回真值。因此下面的表達(dá)式:

$string =~ m/text/

只有在變量“$string”中的字符串包含子字符串“text”時(shí)才返回真值。這是最基本的常規(guī)表達(dá)式,它對(duì)每個(gè)字符進(jìn)行逐字匹配。當(dāng)然,這只是對(duì)常規(guī)表達(dá)式作用的一個(gè)嘗試。以需要查找以“ext”結(jié)尾的四個(gè)字母的單詞為例。為達(dá)到這個(gè)目的,我們使用一個(gè)非凡的字符“.”,常規(guī)表達(dá)式中的句號(hào)告訴Perl匹配其中的任何單獨(dú)的字符。因此下面這個(gè)表達(dá)式:

$string =~ m/.ext/

將與單詞“text”和“next”匹配。

不過(guò),這個(gè)表達(dá)式并非完美,因?yàn)樗c包含“ext”的更長(zhǎng)單詞的一部分相匹配,如“dextrous”和“flextime”。我們可以使用錨字符來(lái)限制匹配的位置。“^”字符匹配字符串的開(kāi)頭,因此:

$string =~ m/^.ext/

與“dextrous”匹配,但不與“context”匹配。

同樣,“$”字符匹配字符串的結(jié)尾:

$string =~ m/.ext$/

與“context”匹配,但不與“dextrous”匹配。

假如你只希望匹配以“ext”結(jié)尾的四個(gè)字母的字符串,那么你可以組合使用上面的兩個(gè)表達(dá)式,像這樣:

$string =~ m/^.ext$/

現(xiàn)在,假如你需要匹配一組給定的字符,而不是句號(hào)位置的任何字符,那該怎么辦呢?常規(guī)表達(dá)式通過(guò)使用方括號(hào)提供一個(gè)方法。以下面的表達(dá)式為例:

$string =~ m/^[tT]ext$/

這個(gè)表達(dá)式只與單詞“text”和“Text”匹配。一對(duì)方括號(hào)將轉(zhuǎn)換其中的任何單個(gè)字符。這個(gè)功能相當(dāng)強(qiáng)大,例如:

$string =~ m/[aeiouAEIOU]/

假如$string變量中含有元音,則上面的例子返回真值。

假如括號(hào)中的第一個(gè)字符是“^”,這時(shí)它就不是一個(gè)錨字符,而是執(zhí)行“非”操作,匹配不在括號(hào)內(nèi)的任意字符,因此假如$string變量中只包含輔音或標(biāo)點(diǎn)符號(hào),可以對(duì)上面的例子進(jìn)行調(diào)整,使它返回真值:

$string =~ m/[^aeiouAEIOU]/

方括號(hào)符號(hào)還可以指定字符的范圍,讓你不必列舉一整串連續(xù)的數(shù)字或字母

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 莱西市| 庆阳市| 黎城县| 保靖县| 博乐市| 扬州市| 秦安县| 十堰市| 万载县| 突泉县| 合川市| 明光市| 葵青区| 互助| 温泉县| 普格县| 宜州市| 宜丰县| 仙游县| 育儿| 土默特左旗| 红原县| 岑溪市| 鄂托克前旗| 淅川县| 曲水县| 乾安县| 宁乡县| 阜城县| 胶州市| 宜阳县| 鄯善县| 漾濞| 夏河县| 云林县| 永昌县| 镇江市| 西昌市| 垣曲县| 达拉特旗| 铁力市|