正規表示式

2021-07-14 04:54:24 字數 3147 閱讀 2064

(1)「*」號:匹配*號前面的字元0次或多次的重複;

str*普通字元r,匹配0次或多次即string.stre,strg等;

(2)「.」匹配任意乙個字

...76.前三個.任意字元6個任意字元,需要注意的是「.」符號只能匹配乙個字元;

(3)「^」匹配行首字元,表示是以「^」後面字元開頭的行;

^money表示匹配以money開頭的行;

綜合舉例:^...x86*,表示:前三個字元為任意字元,4、5、6為x86,7個開始可以重複匹配6的字串開頭的行;

(4)"$"匹配行尾,$符號放在匹配符號之後,與^用法和功能相反;

money$表示以money結尾的所有行;

例子:①!^$表示以空開頭的行首和以空結束的行尾,中間沒有任何字元,即表示匹配空行;

②^.$表示匹配只有乙個字元的行;

(5)「」匹配字元集合,該符號支援窮舉法列出的字符集中所有的元素,也可以使用「-」符號表示字符集的範圍;

例子:[0123456789]表示任意乙個資料,[0-9]也表示任意乙個數字;

[a-z]表示所有的小寫字母;[a-z] 表示所有的大寫字母;

a-za-z] a-za-z]*表示匹配任意引文單詞;

特別注意:^符號匹配行首,但是在[^]表示取反;例如:[^b-d]表示不在b~d範圍內的所有字元;

(6)「\」轉義字元,用來遮蔽乙個字元元的特殊意義『

例子:\.中的「.」不在匹配任意字元,而就只是表示普通字元句號.的含義;

(7)\<\>符號精確匹配符號,用符號"\"遮蔽符號"<>"

例子:\不在匹配包含money字元的單詞,只精確匹配money單詞;

(8)"\"系列符號與「*」符號類似,都是表示前乙個字元的重複,但是"*"表示重複0次或任意次,而"\"可以指定重複次數;系列符號有以下三種是喲個方法:

①\表示前面字元出現n次;

例子:mo\ney只匹配moooney,o出現3次;

②\表示前面字元出現至少n次;

例子:mo\表示匹配moooney,mooooney,moooooney,匹配o出現3次以上的;

③\表示匹配前面字元出現n~m次;

例子:mo\ney表示匹配moooney和mooooney;

[a-z]\精確匹配任意5個大寫字母組成的字元,money,house等;

(9)"?"符號,匹配該符號前面1次或0次;

例子:jo?b;匹配job或joob;

(10)"+"匹配符號前面的字元至少一次;與*的區別是"*"可以匹配0次;

例子:jo+b匹配joob,jooob,但是不匹配job;

(11)符號"()"和"|"通常結合使用,表示一組可選字符集;()符號很少使用,因為符號完全能夠替代;

例子:re(a|e|o)d或re[aeo]d,(a|e|o)表示式表示在a/e/o中任選乙個字元,即reed、read、reod可由該表示式匹配;

bash shell本身不支援正規表示式,使用正規表示式的是shell命令和工具,如grep、awk和sed等;通配的情況下有些符號和正規表示式中的符號含義不是完全一致,例如:*符號不在表示匹配前面字元的重複次數,而是任意多個任意字元;^符號不在表示行首,而是代表取反;?不在表示匹配符號前面1次或者0次,而是任意乙個字元;

例子: echo [a-h]*.awk,查詢匹配以a~h字元開頭並以.awk字尾結尾的檔案並顯示出來;通配種表示式{}符號中用","號隔開表示或的關係,例如

表示匹配以a-h中字元開頭並以.awk結尾的所有檔案和以0開頭,後面只跟乙個任意字元.並以.pem結尾的檔案;

grep是一種強大的文字搜尋工具,它能夠使用正規表示式將搜素文字並將匹配的行列印出來;

grep [選項][模式][檔案]

如下分別說明選項、模式都有哪些:

(1)選項:

-c只輸出匹配行的數量

-i搜尋時忽略大小寫

-h查詢多個檔案是不顯示檔名

-l只列出符合匹配的檔名,不列車具體哪一行;

-n列出所有的匹配行並顯示行號

-s不顯示不存在或無匹配文字的錯誤的資訊

-v顯示不包含匹配的所有行

-w匹配整個單詞

-x匹配整行

-r遞迴搜尋,不僅搜尋當前工作目錄而且還搜尋子目錄

-q不顯示任何搜尋結果,以退出狀態表示搜尋成功與否

-b列印匹配行距離檔案頭的偏移量,以位元組為單位

-o與-b選項結合使用,列印匹配的詞距離檔案頭部的偏移量,以位元組為單位

-e支援擴充套件的正規表示式

-f不支援正規表示式,按照字串的字面意思進行匹配

(2)模式:

grep的模式非常靈活,可以是字串、變數、正規表示式,特別注意無論模式是何種形式,只要模式中間有空格必須使用「」雙引號將其括起來,否則會誤認為搜尋的目標為檔名;

(3)grep和正規表示式結合使用:

例子:①搜尋字尾名為.sh檔案,以echo開頭的所有行;grep  -c  ^echo *.sh

②搜尋.sh檔案結尾的檔案中空白行:grep -c ^$  script.sh

③搜尋script.sh中money不區分大小寫,並將所有匹配的行列印出來包含行號:grep -n "[mm][oo][nn][ee][yy]" script.sh

④搜尋「-」開頭的重複「-」任意次,然後是m字元的行:grep ^-*m filename

⑤搜尋檔案中以"/"開頭,中間是任意四個字元,第六個字元仍然是「/」的行:grep -n ^/..../ filename

⑥搜尋檔案中包含sed.suf.frg字串的行:grep -n sed\.suf\.frg filename

grep擴充套件egrep等價於grep -e;fgrep等價於gerp -f

正規表示式 正規表示式 總結

非負整數 d 正整數 0 9 1 9 0 9 非正整數 d 0 負整數 0 9 1 9 0 9 整數 d 非負浮點數 d d 正浮點數 0 9 0 9 1 9 0 9 0 9 1 9 0 9 0 9 0 9 1 9 0 9 非正浮點數 d d 0 0 負浮點數 正浮點數正則式 英文本串 a za z...

正規表示式 表示式

網域名稱 a za z0 9 a za z0 9 a za z0 9 a za z0 9 interneturl a za z s 或 http w w w 手機號碼 13 0 9 14 5 7 15 0 1 2 3 5 6 7 8 9 18 0 1 2 3 5 6 7 8 9 d 號碼 x x x...

Linux正規表示式 編寫正規表示式

為了所有實用化的用途,你可以通過使用程式產生正確的結果。然而,並不意味著程式總是如你所願的那樣正確地工作。多數情況下,如果程式不能產生想要的輸出,可以斷定真正的問題 排除輸入或語法錯誤 在於如何描述想要的東西。換句話說,應該考慮糾正問題的地方是描述想要的結果的表示式。表示式不完整或者公式表示得不正確...