首頁技術(shù)文章正文

正則表達式語法之基礎(chǔ)正則表達式元字符

更新時間:2022-04-25 來源:黑馬程序員 瀏覽量:

POSIX規(guī)范制訂了兩種標(biāo)準(zhǔn)的正則表達式語法,一種是基本正則表達式,一種擴展正則表達式。這兩中正則表達式的元字符組成略有不同。本節(jié)來學(xué)習(xí)基礎(chǔ)正則表達式元字符。

基礎(chǔ)正則表達式元字符

(1)限定符“*”

符號“*”用于匹配前導(dǎo)字符0次或多次,具體示例如下:

hel*o

以上示例中“*”符號之前是普通字符l,“*”符號就表示匹配l字符0次或多次,字符串helo、hello、hellllllo都可以與hel*o匹配。

(2)點字符“.”

符號“.”用來匹配任意除換行符“\n”外任意的單個字符。當(dāng)正則表達式中出現(xiàn)“.”符號時,意味著該位置應(yīng)有一個字符,具體示例如下:

..U73.

“.”只能匹配一個字符,因此上述字符串表示前兩個字符是任意字符,第3~5個字符是U73,最后一個字符也是任意字符。字符串MHU73、4JU73H等都可與..U73.匹配。

(3)行首定位符“^”

符號“^”用來匹配行首字符,表示行首字符是“^”后面那個字符。例如列舉出/etc目錄下以字符串“sys”開頭的文件,可以使用如下命令:

[itheima@localhost ~]$ ls /etc | grep "^sys"
sysconfig
sysctl.conf
sysctl.d
systemd
system-release
system-release-cpe

注意:

盡管以上示例匹配的是以字符串“sys”開頭的內(nèi)容,但讀者應(yīng)理解為匹配以字符“s”開頭,第二、第三個字符依次為“y”和“s”的行,這種理解方式更符合正則表達式的思維,。這種思維在學(xué)習(xí)正則表達式時非常重要,讀者應(yīng)熟練掌握。

(4)行尾定位符“$”

行尾定位符“$”用來匹配文本行末尾的字符,與“^”符號的作用正相反。例如查找/etc目錄下以conf結(jié)尾的文件,可以使用如下命令。

[itheima@localhost ~]$ ls /etc | grep cof$
asound.conf
autofs.conf
autofs_ldap_auth.conf
brltty.conf
cgconfig.conf
cgrules.conf
cgsnapshot_blacklist.conf
......

同樣,讀者在理解行尾定位符的時候也應(yīng)該從字符的角度去理解,即“conf$”匹配的是以“conf”以字符“f”結(jié)尾,同時倒數(shù)第2~4個字符依次為“n”、“o”、“c”的文本行。

(5)字符組“[]”

“[]”符號的功能比較特殊,它是用來指定一個字符集合的,其基本語法如下:

[abc]

其中a、b和c表示任意單個字符,只要某個字符串在方括號所在的位置出現(xiàn)了方括號中的任意一個字符,就能滿足匹配規(guī)則。

另外,對于連續(xù)的數(shù)字或字母可以使用符號“-”來表示一個范圍,例如[a-z],表示匹配到a到z中的任意一個字母。下面通過查看/etc目錄下以rc開頭,并且rc后面緊跟一個數(shù)字的文件有哪些來演示“[]”符號的使用,查看的命令具體如下所示:

[itheima@localhost ~]$ls /etc | grep "^rc[0-9]" 
rc0.d
rc1.d
rc2.d
rc3.d
rc4.d
rc5.d
rc6.d

由輸出結(jié)果可知,符合規(guī)則的文件一共有7個。

注意:元字符“*”或“.”位于“[]”符號之中,便僅表示一個普通的字符,不再具有特殊意義。

(6)排除型字符組“[^]”

“[^]”表示不匹配其中列出的任意字符,其語法格式如下所示。

[^abc]

它的用法與“[]”符號相反,此處不再贅述。






分享到:
在線咨詢 我要報名
和我們在線交談!