久久综合九色综合97婷婷-美女视频黄频a免费-精品日本一区二区三区在线观看-日韩中文无码有码免费视频-亚洲中文字幕无码专区-扒开双腿疯狂进出爽爽爽动态照片-国产乱理伦片在线观看夜-高清极品美女毛茸茸-欧美寡妇性猛交XXX-国产亚洲精品99在线播放-日韩美女毛片又爽又大毛片,99久久久无码国产精品9,国产成a人片在线观看视频下载,欧美疯狂xxxx吞精视频

有趣生活

當(dāng)前位置:首頁>職場> 正則表達(dá)式基本寫法(常用正則表達(dá)式超強(qiáng)整理)

正則表達(dá)式基本寫法(常用正則表達(dá)式超強(qiáng)整理)

發(fā)布時(shí)間:2024-01-24閱讀( 34)

導(dǎo)讀正則表達(dá)式,又稱規(guī)則表達(dá)式。正則表達(dá)式的英語為:RegularExpression,常簡寫為regex、regexp或RE,是計(jì)算機(jī)科學(xué)中的一個(gè)概念。正則表....

正則表達(dá)式,又稱規(guī)則表達(dá)式。正則表達(dá)式的英語為:Regular Expression,常簡寫為regex、regexp或RE,是計(jì)算機(jī)科學(xué)中的一個(gè)概念。正則表達(dá)式是一種用來匹配字符串的強(qiáng)有力的武器。它的設(shè)計(jì)思想是用一種描述性的語言來給字符串定義一個(gè)規(guī)則,凡是符合規(guī)則的字符串,我們就認(rèn)為它“匹配”了,否則,該字符串就是不合法的。在很多文本編輯器里,正則表達(dá)式通常被用來檢索、替換那些符合某個(gè)模式的文本,許多計(jì)算機(jī)程序設(shè)計(jì)語言也都支持利用正則表達(dá)式進(jìn)行字符串操作。正則表達(dá)式用于字符串處理、表單驗(yàn)證等場合,實(shí)用高效,所以我們很有必要去掌握它,本文梳理一些工作中常用的正則表達(dá)式,以備不時(shí)之需。

正則表達(dá)式基本寫法(常用正則表達(dá)式超強(qiáng)整理)(1)

本文通過Linux系統(tǒng)中的grep命令來學(xué)習(xí)正則表達(dá)式,當(dāng)grep與正則結(jié)合在一起時(shí),grep就會(huì)根據(jù)正則表達(dá)式的含義在文本中查找出符合條件的字符串。

位置匹配

測試文件1內(nèi)容如下:

# cat reg1hello everyoneI am laoliangLinux helloLinuxI likeLinuxverymuch!

正則表達(dá)式基本寫法(常用正則表達(dá)式超強(qiáng)整理)(2)

^”表示錨定行首,匹配輸入字符串的開始位置。比如”^hello”表示只匹配位于行首的hello字符串。

正則表達(dá)式基本寫法(常用正則表達(dá)式超強(qiáng)整理)(3)

$”表示錨定行尾,匹配輸入字符串的結(jié)尾位置。比如”hello$”表示只匹配位于行尾的hello字符串。

正則表達(dá)式基本寫法(常用正則表達(dá)式超強(qiáng)整理)(4)

”^”與”$”分別代表錨定行首與錨定行尾,那么,我們將它們結(jié)合在一起使用,”^Linux$”表示Linux既位于行首,同時(shí)也位于行尾,換句話說,就是整行中只有一個(gè)單詞Linux。

正則表達(dá)式基本寫法(常用正則表達(dá)式超強(qiáng)整理)(5)

那么”^$”表示什么意思呢?”^$”就表示行首與行尾相連,換句話說就是空行?!?n”參數(shù)可以顯示行號(hào),可以看到第5行空行被匹配到了。

正則表達(dá)式基本寫法(常用正則表達(dá)式超強(qiáng)整理)(6)

<”表示錨定詞首?!?lt;lao”表示以lao作為詞首的單詞將會(huì)被匹配到。

正則表達(dá)式基本寫法(常用正則表達(dá)式超強(qiáng)整理)(7)

>”表示錨定詞尾。”liang>”表示以liang作為詞尾的單詞將會(huì)被匹配到。

正則表達(dá)式基本寫法(常用正則表達(dá)式超強(qiáng)整理)(8)

同理,我們也可以將”<“與”>”結(jié)合在一起使用,”<am>”表示當(dāng)am既是詞首又是詞尾時(shí)則會(huì)被匹配到,換句話說,就是當(dāng)am作為一個(gè)獨(dú)立的單詞時(shí),則會(huì)被匹配到。

正則表達(dá)式基本寫法(常用正則表達(dá)式超強(qiáng)整理)(9)

正則表達(dá)式中,除了”<“與”>”能夠表示錨定詞首與錨定詞尾以外,我們還可以使用””去代替”<“和”>”,””既能錨定詞首,也能錨定詞尾,示例如下:

正則表達(dá)式基本寫法(常用正則表達(dá)式超強(qiáng)整理)(10)

B”則與””正好相反,”B”是用來匹配非單詞邊界的,如下”BLinux”表示只要Linux不是詞首就會(huì)被匹配到,同理”LinuxB”表示只要Linux不是詞尾就會(huì)被匹配到。

正則表達(dá)式基本寫法(常用正則表達(dá)式超強(qiáng)整理)(11)

次數(shù)匹配

測試文件2內(nèi)容如下:

# cat reg2a aa aaaaaaaaaabbbab abc abcceaf bf eccfef eef eeefffff

正則表達(dá)式基本寫法(常用正則表達(dá)式超強(qiáng)整理)(12)

{n}” 表示前面的字符連續(xù)出現(xiàn)n次,將會(huì)被匹配到。比如”a{2}”表示a連續(xù)出現(xiàn)兩次就會(huì)被匹到。

正則表達(dá)式基本寫法(常用正則表達(dá)式超強(qiáng)整理)(13)

{x,y}”表示之前的字符連續(xù)出現(xiàn)的次數(shù)在x與y之間,將會(huì)被匹配到。比如”a{2,4}”表示連續(xù)出現(xiàn)2次,3次,4次a字母將會(huì)被匹配。

正則表達(dá)式基本寫法(常用正則表達(dá)式超強(qiáng)整理)(14)

*”表示之前的字符連續(xù)出現(xiàn)任意次數(shù)(包括0次),將會(huì)被匹配到。比如”e*f”表示ef中間e出現(xiàn)任意次將會(huì)匹配。

正則表達(dá)式基本寫法(常用正則表達(dá)式超強(qiáng)整理)(15)

.”表示匹配任意單個(gè)字符。比如”ee..”表示ee后面跟隨任意兩個(gè)字符都會(huì)被匹配到,”空格”也算作單個(gè)字符所以也會(huì)被匹配。

正則表達(dá)式基本寫法(常用正則表達(dá)式超強(qiáng)整理)(16)

.*”可以理解為”.”與”*”的結(jié)合,表示連續(xù)出現(xiàn)任意次的任意單個(gè)字符,換句話說就是匹配任意長度的任意字符。比如”a.*”表示a字母后面存在任意長度的任意字符都可以被匹配到。

正則表達(dá)式基本寫法(常用正則表達(dá)式超強(qiáng)整理)(17)

?”表示匹配其前面的字符0或1次,也就是前面的字符要么沒有要么有一個(gè)。比如”abc?”表示ab后面c出現(xiàn)0次或者1次都會(huì)被匹配到。

正則表達(dá)式基本寫法(常用正則表達(dá)式超強(qiáng)整理)(18)

”表示匹配其前面的字符至少1次,也就是前面的字符必須有至少一個(gè)。比如”abc ”表示ab后面c至少要出現(xiàn)1次才會(huì)被匹配到。

正則表達(dá)式基本寫法(常用正則表達(dá)式超強(qiáng)整理)(19)

字符匹配

測試文件3內(nèi)容如下:

# cat reg3 aa123a123ba123$a123bc456abcdefgaBdCeFgaBCDa1a3a#@!

正則表達(dá)式基本寫法(常用正則表達(dá)式超強(qiáng)整理)(20)

[[:alpha:]]” 表示匹配任意字母(不區(qū)分大小寫)。比如"a[[:alpha:]]{3}"表示只有a字母后面跟隨了3個(gè)字母的字符串才會(huì)被匹配到。還有一種方式”[a-zA-Z]”也能表示任意字母。

正則表達(dá)式基本寫法(常用正則表達(dá)式超強(qiáng)整理)(21)

[[:lower:]]”表示匹配任意小寫字母。比如"a[[:lower:]]{3}"表示只有當(dāng)a后面的3個(gè)字符均為小寫字母時(shí),才會(huì)被匹配到。還有一種方式”[a-z]”也能表示任意一個(gè)小寫字母。

正則表達(dá)式基本寫法(常用正則表達(dá)式超強(qiáng)整理)(22)

[[:upper:]]”表示匹配任意大寫字母。比如"a[[:upper:]]{3}"表示只有當(dāng)a后面的3個(gè)字符均為小寫字母時(shí),才會(huì)被匹配到。還有一種方式”[A-Z]”也能表示任意一個(gè)大寫字母。

正則表達(dá)式基本寫法(常用正則表達(dá)式超強(qiáng)整理)(23)

[[:digit:]]” 表示匹配任意數(shù)字。比如"a[[:digit:]]{3}"表示只有當(dāng)a后面的3個(gè)字符均為數(shù)字時(shí),才會(huì)被匹配到。還有一種方式”[0-9]”也能表示任意一個(gè)數(shù)字。

正則表達(dá)式基本寫法(常用正則表達(dá)式超強(qiáng)整理)(24)

[[:alnum:]]” 表示匹配任意數(shù)字或字母。比如"a[[:alnum:]]{3}"表示當(dāng)a后面的3個(gè)字符為數(shù)字或字母時(shí)會(huì)被匹配到。還有一種方式”[a-zA-Z0-9]”與之等效。

正則表達(dá)式基本寫法(常用正則表達(dá)式超強(qiáng)整理)(25)

我們可以把上面[[:alpha:]]等拆成兩部分理解:

  • 第一部分:最外層的[ ],表示指定范圍內(nèi)的任意單個(gè)字符;
  • 第二部分:最內(nèi)層的[:alpha:],表示不區(qū)分大小寫的字母。

[ ]”就表示匹配指定范圍內(nèi)的任意單個(gè)字符的意思。比如"a[bB#3]"表示a后面是b或B或#或3都可以匹配到。

正則表達(dá)式基本寫法(常用正則表達(dá)式超強(qiáng)整理)(26)

[^ ]”表示匹配指定范圍外的任意單個(gè)字符,它與”[ ]”的含義正好相反。比如“[^0-9]”表示匹配單個(gè)非數(shù)字字符,與[0-9]的含義這正好相反。

正則表達(dá)式基本寫法(常用正則表達(dá)式超強(qiáng)整理)(27)

轉(zhuǎn)義符

測試文件4內(nèi)容如下:

# cat reg4abca!@#a...bca*bc

正則表達(dá)式基本寫法(常用正則表達(dá)式超強(qiáng)整理)(28)

”與正則中的符號(hào)結(jié)合在一起時(shí),就表示這個(gè)符號(hào)本身的含義。比如”.”在正則表達(dá)式中代表任意單個(gè)字符,如果我們需要匹配字母a后面兩個(gè).就需要用到轉(zhuǎn)義符””。

正則表達(dá)式基本寫法(常用正則表達(dá)式超強(qiáng)整理)(29)

案例

我們需要從ifconfig命令的結(jié)果中找出IPv4格式的IP地址,正則表達(dá)式可以如下進(jìn)行編寫:

([0-9]{1,3}.){3}[0-9]{1,3}

正則表達(dá)式基本寫法(常用正則表達(dá)式超強(qiáng)整理)(30)

這里可以分為三部分進(jìn)行理解:

  • 第一部分”([0-9]{1,3}.)”表示一個(gè)最少為1位數(shù)字,最多為3位數(shù)字的字符串,并且這個(gè)字符串后面跟隨了一個(gè)”.”,我們把這個(gè)帶有點(diǎn)的數(shù)字字符串當(dāng)做一個(gè)整體。
  • 第二部分”{3}”表示之前的字符需要連續(xù)出現(xiàn)3次,當(dāng)它與第一部分的正則結(jié)合在一起時(shí),表示符合第一部分正則的字符串需要連續(xù)出現(xiàn)3次。
  • 第三部分的正則為”[0-9]{1,3}”表示一個(gè)最少為1位數(shù)字,最多為3位數(shù)字的字符串。

這樣我們就匹配出來了IP地址。

以上就是關(guān)于正則表達(dá)式的介紹了,相信在工作中你一定會(huì)用到它!

TAGS標(biāo)簽:   正則   表達(dá)式   基本   寫法   常用   正則表達(dá)式基本寫法(

歡迎分享轉(zhuǎn)載→ http://m.avcorse.com/read-226579.html

相關(guān)文章

Copyright ? 2024 有趣生活 All Rights Reserve吉ICP備19000289號(hào)-5 TXT地圖HTML地圖XML地圖