国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Linux:正則表達式

這篇具有很好參考價值的文章主要介紹了Linux:正則表達式。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

目錄

一、grep和元字符

? ? ? ? 1.1、grep

? ? ? ? 1.2、元字符

二、正則匹配

? ? ? ? ?2.1、查找特定的字符

? ? ? ? ?2.2、使用[]來查找集合字符

? ? ? ? 要查找short和shirt時

? ? ? ? 要查找包含重復(fù)或單個字符oo時

? ? ? ? ?查找oo前面不是w的字符串

????????2.3、查找行首"^"與行尾字符"$"

? ? ? ? 查找以.結(jié)尾的行?

? ? ? ? 查詢空行

? ? ? ? ?2.4、查找任意一個字符“.”與重復(fù)字段“*”

? ? ? ? ?查詢多個o

? ? ? ? 查找w開頭d結(jié)尾至少包含一個o?

?????????查詢以 w 開頭 d 結(jié)尾,中間的字符可有可無的字符串。

? ? ? ? ?2.5、查找連續(xù)字符范圍{}

? ? ? ? 查找兩個o字符

????????查詢以 w 開頭以 d 結(jié)尾,中間包含 2~5 個 o 的字符串

????????查詢以 w 開頭以 d 結(jié)尾,中間包含 2 個或 2 個以上 o 的字符串?

三、擴展正則表達式

四、正則的一些實用寫法


? ? ? ? 正則表達式又稱為正規(guī)表達式、常規(guī)表達式、在代碼中常簡寫為regex、regex或RE。正則表達式是使用單個字符串來描述、匹配一系列符合某個句法規(guī)則的字符串,簡單來說,是一種匹配字符串的方法,通過一些特殊符號,實現(xiàn)快速查找、刪除、替換某個特定的字符串。

? ? ? ? 這里不得不提的是shell三劍客:grep,sed,awk。

一、grep和元字符

? ? ? ? 1.1、grep

grep [選項]  [查找條件(正則)]  [目標文件]

-E:開啟擴展的正則表達式
-c:計算找到'搜尋字符串'的次數(shù)
-i:忽略大小寫的不同,所以大小寫視為相同
-o:只顯示被漠視匹配到的字符串
-v:反向選擇,即輸出沒有匹配到的那些字符
--color=auto:可以將找到的關(guān)鍵詞部分加上顏色的顯示!
-n:順便輸出行號
-w:表示精確匹配一個字符

? ? ? ? 1.2、元字符

^ 匹配輸入字符串的開始位置。除非在方括號表達式中使用,表示不包含該字符集合。要匹配"^"字符本身,需要轉(zhuǎn)移"\^"
$ 匹配輸入字符串的結(jié)尾位置。如果設(shè)置了RegExp對象的Multiline屬性,則"$"也匹配'\n'或'r'
. “.”代表除"\n\s"之外的任何單個字符
\ 反斜杠,又叫轉(zhuǎn)義字符,去除其后緊跟的元字符或通配符的 特殊意義
* 匹配前面的子表達式零次或多次。要匹配"*"字符,要進行\(zhòng)轉(zhuǎn)移
[ ] 字符集合,匹配所包含的任意的一個字符
[^] 復(fù)制字符集。匹配未包含在[ ]內(nèi)的任意一個字符
[n1-n2] 字符范圍。匹配指定范圍內(nèi)的任意一個字符。例如[a-z]可以匹配到a到z范圍內(nèi)的任意一個小寫字母字符
{n} n是一個非負整數(shù),匹配確定的n次,例如“o{2}”不能匹配“Bob”中的“o”,但是能匹配到“food”中的“oo”
{n,} n是一個非負整數(shù),至少(最少)匹配n次。例如,“o{2,}”不能匹配"Bob"中的“o”,但是能匹配“fooooood”中的所有o?!皁{1.}”等于“o+”
{n,m}

n和m均為非負整數(shù),其中n<=m,最少匹配n次,最多匹配m次

二、正則匹配

? ? ? ? 準備一個文本文件用于演示?Linux:正則表達式

? ? ? ? ?2.1、查找特定的字符

grep -n 'the' test.txt

Linux:正則表達式

?grep -vn 'the' test.txt? #匹配除了包含the的行

Linux:正則表達式

? ? ? ? ?2.2、使用[]來查找集合字符

? ? ? ? 要查找short和shirt時

? ? ? ? 比如我們要查找“shirt”與“short”這兩個字符串時,可以發(fā)現(xiàn)這兩個字符串均包含sh與rt。此時執(zhí)行下面命令可以提示查找到“shirt”和“short”這兩個字符串,其中“[]”無論有幾個字符,都代表一個字符,但是會按照[]內(nèi)的每個字符都去做一次匹配,比如[io]表示要匹配i或者o。

grep -n "sh[io]rt" test.txt

Linux:正則表達式

? ? ? ? 要查找包含重復(fù)或單個字符oo時

grep -n 'oo' test.txt

?Linux:正則表達式

? ? ? ? ?查找oo前面不是w的字符串

? ? ? ? 若查找“oo”前面不是“w”的字符串,只需要通過集合字符的反向選擇“[A]”來實現(xiàn)該目的。例如執(zhí)行“grep -n‘[^w]oo’test.txt”命令表示在 test.txt 文本中查找“oo”前面不是“w”的字符串。

grep -n '[^w]oo' test.txt

Linux:正則表達式

?????????在上述命令的執(zhí)行結(jié)果中發(fā)現(xiàn)“woood”與“wooooood”也符合匹配規(guī)則,二者均包含“w”。
其實通過執(zhí)行結(jié)果就可以看出,符合匹配標準的字符加粗顯示,而上述結(jié)果中可以得知, “#woood #”中加粗顯示的是“ooo”,而“oo”前面的“o”是符合匹配規(guī)則的。同理“#woooooood#”
也符合匹配規(guī)則。

grep -n '[0-9]' test.txt

?Linux:正則表達式

????????2.3、查找行首"^"與行尾字符"$"

grep -n '^the' test.txt

Linux:正則表達式

?grep -n '^[a-z]' test.txt

Linux:正則表達式

?grep -n '^[A-Z]' test.txt?

Linux:正則表達式

? ? ? ? 查找以.結(jié)尾的行?

?grep -n '\.$' test.txt

Linux:正則表達式

? ? ? ? 查詢空行

?grep -n '^$' test.txt? ? #查看空行

Linux:正則表達式

? ? ? ? ?2.4、查找任意一個字符“.”與重復(fù)字段“*”

grep -n'w..d' test.txt?

Linux:正則表達式

? ? ? ? ?查詢多個o

????????在上述結(jié)果中,“wood”字符串“w..d”匹配規(guī)則。若想要查詢 oo、ooo、ooooo 等資料, 則需要使用星號(*)元字符。但需要注意的是,“*”代表的是重復(fù)零個或多個前面的單字符。 “o*”表示擁有零個(即為空字符)或大于等于一個“o”的字符,因為允許空字符,所以執(zhí)行“grep -n'o*'test.txt”命令會將文本中所有的內(nèi)容都輸出打印。如果是“oo*”,則第一個 o 必須存在, 第二個 o 則是零個或多個 o,所以凡是包含 o、oo、ooo、ooo,等的資料都符合標準。同 理,若查詢包含至少兩個 o 以上的字符串,則執(zhí)行“grep -n 'ooo*' test.txt”命令即可。

grep -n'ooo*' test.txt? ? #匹配兩個以上的o

Linux:正則表達式? ?

? ? ? ? 查找w開頭d結(jié)尾至少包含一個o?

?grep -n'woo*d' test.txt? ?

#查詢以 w 開頭 d 結(jié)尾,中間包含至少一個 o 的字符串,執(zhí)行以下命令即可實現(xiàn)。

Linux:正則表達式

?????????查詢以 w 開頭 d 結(jié)尾,中間的字符可有可無的字符串。

?grep -n 'w.*d' test.txt

?Linux:正則表達式

????????????執(zhí)行以下命令即可查詢?nèi)我鈹?shù)字所在行????

grep -n '[0-9][0-9]*' test.txt?

Linux:正則表達式

? ? ? ? ?2.5、查找連續(xù)字符范圍{}

????????在上面的示例中,使用了“.”與“*”來設(shè)定零個到無限多個重復(fù)的字符,如果想要限制一個 范圍內(nèi)的重復(fù)的字符串該如何實現(xiàn)呢?例如,查找三到五個 o 的連續(xù)字符,這個時候就需 要使用基礎(chǔ)正則表達式中的限定范圍的字符“{}”。因為“{}”在 Shell 中具有特殊意義,所以在 使用“{}”字符時,需要利用轉(zhuǎn)義字符“\”,將“{}”字符轉(zhuǎn)換成普通字符。“{}”字符的使用方法如下所示。?

? ? ? ? 查找兩個o字符

grep -n 'o\{2\}' test.txt

?Linux:正則表達式

????????查詢以 w 開頭以 d 結(jié)尾,中間包含 2~5 個 o 的字符串

grep -n 'wo\{2,5\}' test.txt

Linux:正則表達式

????????查詢以 w 開頭以 d 結(jié)尾,中間包含 2 個或 2 個以上 o 的字符串?

grep -n'wo\{2,\}d' test.txt

?Linux:正則表達式

?三、擴展正則表達式

+       
        作用:重復(fù)一個或者一個以上的前一個字符
        示例:執(zhí)行“egrep -n 'wo+d' test.txt”命令,即可查詢"wood" "woood" "woooooood"等字符串
?     
        作用:零個或者一個的前一個字符
        示例:執(zhí)行“egrep -n 'bes?t' test.txt”命令,即可查詢“bet”“best”這兩個字符串
| 
        作用:使用或者(or)的方式找出多個字符
        示例:執(zhí)行“egrep -n 'of|is|on'test.txt”命令即可查詢"of"或者"if"或者"on"字符串
() 
        作用:查找“組”字符串
        示例:“egrep-n't(a|e)st'test.txt”。“tast”與“test”因為這兩個單詞的“t”與“st”是重復(fù)的,所以將“a”與“e” 列于“()”符號當中,并以“|”分隔,即可查詢"tast"或者"test"字符串
()+ 
        作用:辨別多個重復(fù)的組
        示例:“egrep -n 'A(xyz)+C' test.txt”。該命令是查詢開頭的"A"結(jié)尾是"C",中間有一個以上的"xyz"字符串的意

四、正則的一些實用寫法

? ? ? ? 比如我們要查看apache中有哪些IP對我們進行了訪問,并進行計數(shù)

cat access_log | grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}' ?| sort -n | uniq -c | sort -nr | head -10

[0-9]\{1,3\}:匹配0-9的數(shù)字三次

\.:IP的分割符“.”

這樣循環(huán)4次,就能識別網(wǎng)絡(luò)IP

sort -n :對數(shù)字開頭字符進行排序

sort -nr:對數(shù)字開頭字符逆向排序

uniq -c:對重復(fù)項進行計數(shù)

###后面文章我也會對sort和uniq詳細說明###

執(zhí)行效果:

Linux:正則表達式文章來源地址http://www.zghlxwxcb.cn/news/detail-434237.html

到了這里,關(guān)于Linux:正則表達式的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 【面試算法——動態(tài)規(guī)劃 21】正則表達式匹配(hard)&& 交錯字符串

    【面試算法——動態(tài)規(guī)劃 21】正則表達式匹配(hard)&& 交錯字符串

    鏈接: 10. 正則表達式匹配 給你一個字符串 s 和一個字符規(guī)律 p,請你來實現(xiàn)一個支持 ‘.’ 和 ‘*’ 的正則表達式匹配。 ‘.’ 匹配任意單個字符 ‘*’ 匹配零個或多個前面的那一個元素 所謂匹配,是要涵蓋 整個 字符串 s的,而不是部分字符串。 示例 1: 輸入:s = “aa”

    2024年02月08日
    瀏覽(27)
  • 【正則表達式】正則表達式常見匹配模式

    模式 描述 w 匹配字母數(shù)字及下劃線 W 匹配非字母數(shù)字下劃線 s 匹配任意空白字符,等價于 [tnrf]. S 匹配任意非空字符 d 匹配任意數(shù)字,等價于 [0-9] D 匹配任意非數(shù)字 A 匹配字符串開始 Z 匹配字符串結(jié)束,如果是存在換行,只匹配到換行前的結(jié)束字符串 z 匹配字符串結(jié)

    2024年02月09日
    瀏覽(41)
  • Linux學習之正則表達式元字符和grep命令

    Linux學習之正則表達式元字符和grep命令

    cat /etc/redhat-release 看到操作系統(tǒng)的版本是 CentOS Linux release 7.6.1810 (Core) , uname -r 可以看到內(nèi)核版本是 3.10.0-957.21.3.el7.x86_64 。 正則表達式是一種搜索字符串的模式,通俗點理解,也就是普通字符和元字符共同組成的字符集合匹配模式。正則表達式的主要作用是文本搜索和字符

    2024年02月14日
    瀏覽(20)
  • 正則表達式 (用于靈活匹配文本的表達式)

    目錄 . * 用于匹配任意單個字符,除了換行符。 例如使用正則表達式 a.b, 它可以匹配aab、acb、a#b 用于匹配前一個字符零次或多次。 例如,使用正則表達式 ab*c ,它可以匹配 \\\"ac\\\"、\\\"abc\\\"、\\\"abbc\\\",因為 b* 表示匹配零個或多個字符 \\\"b\\\"。所以,這個表達式可以匹配 \\\"ac\\\"(零個 \\\"b\\\"),

    2024年01月16日
    瀏覽(33)
  • Java 正則表達式匹配

    正則表達式: 定義一個搜索模式的字符串。 正則表達式可以用于搜索、編輯和操作文本。 正則對文本的分析或修改過程為:首先正則表達式應(yīng)用的是文本字符串(text/string),它會以定義的模式從左到右匹配文本,每個源字符只匹配一次。 正則表達式 匹配 this is text 精確匹配

    2024年02月06日
    瀏覽(29)
  • 正則表達式的神奇世界:表達、匹配和提取

    正則表達式,這個看起來像密林中的迷宮的工具,既神秘又令人著迷。它是編程世界中的一門魔法,有著神奇的能力。你是否曾經(jīng)在尋找或解析文本時感到束手無策?或許你想要從海量數(shù)據(jù)中提取特定信息?這正是正則表達式可以派上用場的時候。本文將帶你探索這個神奇的

    2024年02月07日
    瀏覽(35)
  • VSCode 正則表達式 匹配多行

    VSCode 正則表達式 匹配多行

    VS Code 正則表達式匹配多行 (.|n)*? 案例1: str(.|n)*?, 案例2: const(.|n)*?}$ 案例3: fn(.|n)*?},

    2024年02月02日
    瀏覽(21)
  • 【動態(tài)規(guī)劃】通配符匹配與正則表達式匹配

    【動態(tài)規(guī)劃】通配符匹配與正則表達式匹配

    題目描述: 給你一個輸入字符串 (s) 和一個字符模式 § ,請你實現(xiàn)一個支持 ‘?’ 和 ‘*’ 匹配規(guī)則的通配符匹配: ‘?’ 可以匹配任何單個字符。 ‘*’ 可以匹配任意字符序列(包括空字符序列)。 判定匹配成功的充要條件是:字符模式必須能夠 完全匹配 輸入字符串(而

    2024年02月07日
    瀏覽(36)
  • 詳解正則表達式匹配方法 match()

    詳解正則表達式匹配方法 match()

    在前端開發(fā)中,正則表達式是一大利器。所以我們這次就來討論下match()方法。 match本身是JavaScript語言中字符串對象的一個方法,該方法的簽名是 match([string] | [RegExp]) 它的參數(shù)既可以是一個字符串,也可以是一個正則表達式。該方法絕大多數(shù)都是要使用正則表達式的,所以參

    2024年02月11日
    瀏覽(19)
  • 正則表達式的匹配(py編程)

    1. 匹配單個字符 在上一小節(jié)中,了解到通過re模塊能夠完成使用正則表達式來匹配字符串 本小節(jié),將要講解正則表達式的單字符匹配 代碼 功能 . 匹配任意1個字符(除了n) [ ] 匹配[ ]中列舉的字符 d 匹配數(shù)字,即0-9 D 匹配非數(shù)字,即不是數(shù)字 s 匹配空白,即 空格,tab鍵

    2024年02月02日
    瀏覽(23)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包