使用正規表示式

2021-06-28 19:24:09 字數 1447 閱讀 7065

本文節選自:並有稍微修正。

使用正規表示式

您可以使用正規表示式做很多事情。在以下的列表中,您可以找到一些最普通、最常用的正規表示式的例子。

* ^:表示文字串必須在一行的開頭。所以,當查詢行的開頭只為「hosts」的行,可以使用命令:grep -ls '^hosts'

* $:代表了一行的結尾。所以,當查詢行的結尾只為「hosts」的行,可以使用命令:grep -ls 'hosts$'

*   你可以在乙個正規表示式中結合^和$,去查詢僅僅包含"yes"的行,使用的命令為grep -ls '^yes$'

* .: 乙個可以指代除了換行符以外任意字元的萬用字元。為了查詢包含tex、tux、tox或者tix的行,可以使用:grep -ls 't.x'

* [ ]:表示在乙個正規表示式中,方括號之間的字元是可選的。為了查詢名字為pinda或者linda的使用者,可以使用命令:grep -ls '[pl]inda'

* [^ ]:忽略掉方括號中^之後的所有字元。為了查詢包含文字linda的行,並忽略掉其中僅包含linda或者pinda的行,命令為:grep -ls '[^pl]inda'

* -:代表一類或者乙個範圍內的字元。在像tr這樣的命令中,這是非常有用的。以下的命令可以將所有的小寫字母轉為大寫字母:tr a-z a-z < mytext。同樣地,你可以使用正規表示式grep -ls '^0-9'去查詢其中有一些行是以數字開頭的檔案。

* \< 和 \>:查詢乙個字的開頭或者結尾的模式。查詢行的開頭的字以"san"為起始的命令為: grep \。這些正規表示式有兩個缺點—他們並不查詢以指定的正規表示式開頭的行,並且他們並不被所有的工具所支援。但是,vi和grep是支援這種用法的。

* \:確保在正規表示式中有特殊含義的字元不被解釋。查詢以任何字元開始,後面跟著文字"host"的文字串的命令為grep -ls '.host'。而如果你需要查詢以點為第乙個字元,緊接著為"host"的文字串,可以用命令:grep -ls '\.host'

這些正規表示式可以幫助您找到包含特定文字串的字。您也可以使用正規表示式去指定,在乙個字中,該字串出現的頻率。比如,您可以使用正規表示式去搜尋剛好包含使用者名稱"linda"三次的檔案。為了達到這一目的,您需要使用正規表示式的重複運算元,並保證整個正規表示式位於引號中。沒有引號的話,您可能會導致shell去解釋您的重複運算元。

最重要的重複運算元的列表如下:

* *:表示前述的正規表示式可能出現一次、多次或者根本不出現。注意:不要和shell中的*混淆—在shell中,*表示任意字元,而在正規表示式中,*表示之前的正規表示式可能存在。

* ?:表示在該位置可能是乙個字元(但並不是必須是)。例如,同時查詢color和colour的命令為:grep -ls 'colo.r'

* +:表示之前的字元或者正規表示式至少要出現一次

* \:表示之前的字元或者正規表示式至少要出現n次。當你查詢乙個介於100到999之間的數字時,這是很有用的:grep -ls '0-9\'

完!

使用正規表示式

如果原來沒有使用過正規表示式,那麼可能對這個術語和概念會不太熟悉。不過,它們並不是您想象的那麼新奇。請回想一下在硬碟上是如何查詢檔案的。您肯定會使用 和 字元來幫助查詢您正尋找的檔案。字元匹配檔名中的單個字元,而 則匹配乙個或多個字元。乙個如 data?dat 的模式可以找到下述檔案 data1.d...

正規表示式使用

1 靜態match方法 使用靜態match方法,可以得到源中第乙個匹配模式的連續子串。2 靜態的matches方法 這個方法的過載形式同靜態的match方法,返回乙個matchcollection,表示輸入中,匹配模式的匹配的集合。3 靜態的ismatch方法 此方法返回乙個bool,過載形式同靜態...

正規表示式使用

數字 0 9 字母 a za z 特殊字元 等等 幾位數字 10位 d 漢字 u4e00 u9fa5 混合使用 前2位是字母,後面是數字 a za z a za z 0 9 前2位是字母,後面是10位數字 a za z a za z d 漢字和字母混合 u4e00 u9fa5a za z 特殊表示式...