使用Perl常規表達式進行匹配

長期以來,Perl以其對常規表達式的固有支持,一直是非常流行的文本處理工具。在這篇入門性文章中,我們將帶領你簡單了解如何在你自己的程序中使用常規表達式,實現更加強大的文本搜索和替代功能。

我們首先了解最簡單的常規表達式:匹配。如果在字符串中找到相匹配的模式,匹配操作就返回真值。因此下面的表達式:

$string =~ m/text/

只有在變量“$string”中的字符串包含子字符串“text”時才返回真值。這是最基本的常規表達式,它對每個字符進行逐字匹配。當然,這只是對常規表達式作用的一個嘗試。以需要查找以“ext”結尾的四個字母的單詞爲例。爲達到這個目的,我們使用一個特殊的字符“.”,常規表達式中的句號告訴Perl匹配其中的任何單獨的字符。因此下面這個表達式:

$string =~ m/.ext/

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

不過,這個表達式並非完美,因爲它與包含“ext”的更長單詞的一部分相匹配,如“dextrous”和“flextime”。我們可以使用錨字符來限制匹配的位置。“^”字符匹配字符串的開頭,因此:

$string =~ m/^.ext/

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

同樣,“$”字符匹配字符串的結尾:

$string =~ m/.ext$/

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

如果你只希望匹配以“ext”結尾的四個字母的字符串,那麽你可以組合使用上面的兩個表達式,像這樣:

$string =~ m/^.ext$/

現在,如果你需要匹配一組給定的字符,而不是句號位置的任何字符,那該怎麽辦呢?常規表達式通過使用方括號提供一個方法。以下面的表達式爲例:

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

這個表達式只與單詞“text”和“Text”匹配。一對方括號將轉換其中的任何單個字符。這個功能相當強大,例如:

$string =~ m/[aeiouAEIOU]/

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

如果括號中的第一個字符是“^”,這時它就不是一個錨字符,而是執行“非”操作,匹配不在括號內的任意字符,因此如果$string變量中只包含輔音或標點符號,可以對上面的例子進行調整,使它返回真值:

$string =~ m/[^aeiouAEIOU]/

方括號符號還可以指定字符的範圍,讓你不必列舉一整串連續的數字或字母,例如,下面的例子匹配任何小寫字母:

$string =~ m/[a-z]/

到現在爲止,我們每次都是處理字符串中的一個字符,但許多情況下我們需要處理更加複雜的問題。我們使用“|”或分段操作達到這個目的。假設我們希望檢查$string變量中是否含有“next”或“previous”,我們可以使用下面的表達式:

$string =~ m/next|previous/

如果我們希望在這個表達式中使用錨字符,那麽我們需要將選項組合起來,就像在算術中使用圓括號那樣。因此,如果我們希望只匹配字符串開頭部分的“next”或“previous”,可以這樣寫表達式:

$string =~ m/^(next|previous)/

SED,AWK學習筆記Part 1-----利用正則表達式進行文本匹配
1.3 文本匹配一些unix的文本處理程序讓你可以搜索,某些時候可以改變一些文本模式,而不是固定的字串。這些應用包括編輯工具ed,ex,vi和sed,還有awk程序語言和命令行命令grep和egrep.文本模式(更正式地講應該叫正則表...查看完整版>>SED,AWK學習筆記Part 1-----利用正則表達式進行文本匹配
 
Java中使用正則表達式實現字符串匹配
  黑暗歲月  有一個String,如何查詢其中是否有y和f字符?最黑暗的辦法就是:  程序1:我知道if、for語句和charAt()啊。  class Test{  public static void main(String args[]) {  String str="For my ...查看完整版>>Java中使用正則表達式實現字符串匹配
 
Java中使用正則表達式實現字符串匹配
  黑暗歲月  有一個String,如何查詢其中是否有y和f字符?最黑暗的辦法就是:   程序1:我知道if、for語句和charAt()啊。class Test{ public static void main(String args[]) {  String str="For my money...查看完整版>>Java中使用正則表達式實現字符串匹配
 
使用正則表達式進行xml數據驗證
     XML Schema是定義XML的數據定義文件,以.xsd作爲文件的擴展名。它也以被用來定義一類XML文件。  通常,一些特殊含義的數據不能通過系統預設的數據結構(類型)清楚地描述。  XML Schema 規範中聲明:可以...查看完整版>>使用正則表達式進行xml數據驗證
 
使用正則表達式進行xml數據驗證
使用正則表達式進行xml數據驗證 使用正則表達式進行xml數據驗證 XML Schema是定義XML的數據定義文件,以.xsd作爲文件的擴展名。它也以被用來定義一類XML文件。通常,一些特殊含義的數據不能通過系統預設的數...查看完整版>>使用正則表達式進行xml數據驗證
 
使用正則表達式進行數據有效性校驗的TextBox控件
從TextBox集成,加入正則表達式校驗數據的功能,應該有一定用處,我在CSDN的共享軟件裏面提交上去了,有興趣的哥們可以去看看。這裏粘上源代碼,最起碼讓我這樣的低手看看,^_^ /** * 創建于 2004年 2月17日 * 作者:...查看完整版>>使用正則表達式進行數據有效性校驗的TextBox控件
 
使用正則表達式進行xml數據驗證
XML Schema是定義XML的數據定義文件,以.xsd作爲文件的擴展名。它也以被用來定義一類XML文件。通常,一些特殊含義的數據不能通過系統預設的數據結構(類型)清楚地描述。XML Schema 規範中聲明:可以通過facet來限制(...查看完整版>>使用正則表達式進行xml數據驗證
 
Perl中的正則表達式
  1 正則表達式的三種形式  首先我們應該知道 Perl 程序中,正則表達式有三種存在形式,他們分別是:  匹配:m/<regexp>/ (還可以簡寫爲 /<regexp>/ ,略去 m)  替換:s/<pattern>/<...查看完整版>>Perl中的正則表達式
 
PERL裏正則表達式的簡介
  一、簡介  二、匹配操作符  三、模式中的特殊字符  1、字符+  2、字符 []和[^]  3、字符 *和?  4、轉義字符  5、匹配任意字母或數字  6、錨模式  7、模式中的變量替換  8、字符範圍轉義前綴...查看完整版>>PERL裏正則表達式的簡介
 
 
回到王朝網路首頁