【現(xiàn)學(xué)現(xiàn)忘&Shell編程】— 28.基礎(chǔ)正則表達(dá)式練習(xí)(三)

(7)\{n\}練習(xí)

\{n\}表示其前面的字符恰好出現(xiàn)n次聋丝。

提示:\{n\}中的\表示轉(zhuǎn)義符,下面同理接谨。

如下面一段文本:

Stay hungry, stay foolish.  ——Steve Jobs
求知若饑,虛心若愚笼蛛。——喬布斯

Stay hungry, stay folish.  ——Steve Jobs
Stay hungry, stay fooolish.  ——Steve Jobs
Stay hungry, stay foooolish.  ——Steve Jobs
Stay hungry, stay fooooolish.  ——Steve Jobs
  • 匹配包含三個(gè)連續(xù)的o
    執(zhí)行命令:grep "o\{3\}" test2.txt

    可以看到有三個(gè)連續(xù)的o弛车,或者包含三個(gè)連續(xù)o齐媒,都會(huì)被匹配到。
    那與直接正則匹配三個(gè)o有什么區(qū)別纷跛?
    執(zhí)行命令:grep "ooo" test2.txt

    原因:
    如果是想匹配一個(gè)重復(fù)的字母喻括,直接匹配字母的方式更為方便。
    而如果我想要匹配重復(fù)任意字母或者數(shù)字贫奠,則\{n\}方式更為便捷唬血。
    看下面練習(xí)。
  • 匹配三個(gè)連續(xù)的數(shù)字
    文本
abc adapt 適應(yīng) abc
12a adopt 采用 12345

abc adept 內(nèi)行 XYZ
1b3 floor 地板 7788999
123 flour 面粉 123

執(zhí)行命令:grep "[0-9]\{3\}" test2.txt


我們可以看到唤崭,有三個(gè)連續(xù)的數(shù)字拷恨,或者包含有三個(gè)連續(xù)數(shù)字的文本,都被匹配到了浩姥。
如果我們要是不用\{n\}的方式進(jìn)行正則匹配的話挑随,如下:
執(zhí)行命令:grep "[0-9][0-9][0-9]" test2.txt

我們可以看到上邊的命令就會(huì)麻煩很多,如果要是匹配10個(gè)連續(xù)的數(shù)字勒叠,那命令就非常的冗余了兜挨。
字母也是同理的。

  • 只匹配三個(gè)連續(xù)的數(shù)字
    雖然上面的12345和7788999是包含三個(gè)連續(xù)的數(shù)字眯分,所以也是可以列出的拌汇。
    可是這樣不能體現(xiàn)出來(lái)[0-9]\{3\}只能匹配三個(gè)連續(xù)的數(shù)字,而不是匹配四個(gè)連續(xù)的數(shù)字弊决。
    那么正則中就應(yīng)該加入限位(制)符(可以是前后有標(biāo)識(shí)的字符或者是行尾行首等進(jìn)行限位)噪舀,如下:
    執(zhí)行命令魁淳,限制行首:grep "^[0-9]\{3\}" test2.txt


    或者限制行尾,注意前邊要多加一個(gè)空格限位与倡,才能符合該需求界逛。
    執(zhí)行命令:grep " [0-9]\{3\}$" test2.txt

  • 用上面一段文本,練習(xí)匹配只包含三個(gè)o的文本纺座。
    執(zhí)行命令:grep "fo\{3\}l" test2.txt


    說(shuō)明:f和l就是限位(制)符息拜。

注意:
\{n\}匹配的方式一般不會(huì)用于匹配字母,多用于匹配數(shù)字净响,如電話號(hào)碼少欺。
還要再重復(fù)一遍,正則表達(dá)式是包含匹配馋贤,多注意限位(制)符的使用赞别。

(8)\{n,\}練習(xí)

\{n配乓,\}表示其前面的字符出現(xiàn)不小于n次仿滔。

如下面一段文本:

Stay hungry, stay foolish.  ——Steve Jobs
求知若饑,虛心若愚∮糖郏——喬布斯

Stay hungry, stay folish.  ——Steve Jobs
Stay hungry, stay fooolish.  ——Steve Jobs
Stay hungry, stay foooolish.  ——Steve Jobs
Stay hungry, stay fooooolish.  ——Steve Jobs

比如fo\{4,\}l這個(gè)正則就會(huì)匹配用f開(kāi)頭堤撵,l結(jié)尾,中間最少有4個(gè)o的字符串羽莺。

執(zhí)行命令:grep "fo\{4,\}l" test2.txt

正則表達(dá)是fo\{4,\}looooo*的區(qū)別同上邊(7)\{n\}同理。

練習(xí):匹配至少連續(xù)5個(gè)字?jǐn)?shù)的文本

abc adapt 適應(yīng) abc
12a adopt 采用 12345

abc adept 內(nèi)行 XYZ
1b3 floor 地板 7788999
123 flour 面粉 123

執(zhí)行命令:grep "[0-9]\{4,\}" test2.txt

(9)\{n洞豁,m\}練習(xí)

\{n盐固,m\}匹配其前面的字符至少出現(xiàn)n次,最多出現(xiàn)m次丈挟。

下面一段文本:

Stay hungry, stay foolish.  ——Steve Jobs
求知若饑,虛心若愚刁卜。——喬布斯

Stay hungry, stay folish.  ——Steve Jobs
Stay hungry, stay fooolish.  ——Steve Jobs
Stay hungry, stay foooolish.  ——Steve Jobs
Stay hungry, stay fooooolish.  ——Steve Jobs
Stay hungry, stay foooooolish.  ——Steve Jobs

匹配在字母f和字母l之間有最少3個(gè)o曙咽,最多5個(gè)o蛔趴。

執(zhí)行命令:grep "fo\{3,5\}l" test2.txt

4、總結(jié)

我們學(xué)習(xí)Shell的正則表達(dá)式例朱,實(shí)際的應(yīng)用是什么孝情?

  • 主要是做字符串的模糊匹配,比如要求你輸入一個(gè)手機(jī)號(hào)洒嗤,或者身份證號(hào)箫荡,再或者是一個(gè)郵箱地址等,做模糊匹配渔隶,進(jìn)行錯(cuò)略的過(guò)濾羔挡,來(lái)過(guò)濾掉一些不符合規(guī)則的輸入洁奈。(更細(xì)的驗(yàn)證在后臺(tái)處理,如短信或者郵箱等驗(yàn)證操作)

  • 還有再Shell中我們也常常會(huì)讀取文本中的數(shù)據(jù)绞灼,這些文本中的數(shù)據(jù)也是字符串利术,我們通過(guò)正則表達(dá)式來(lái)過(guò)濾出一些我們需要的數(shù)據(jù)信息。

提示:要注意區(qū)分正則表達(dá)式和通配符中的符號(hào)功能的不同低矮。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末印叁,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子商佛,更是在濱河造成了極大的恐慌喉钢,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,183評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件良姆,死亡現(xiàn)場(chǎng)離奇詭異肠虽,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)玛追,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門税课,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人痊剖,你說(shuō)我怎么就攤上這事韩玩。” “怎么了陆馁?”我有些...
    開(kāi)封第一講書人閱讀 168,766評(píng)論 0 361
  • 文/不壞的土叔 我叫張陵找颓,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我叮贩,道長(zhǎng)击狮,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 59,854評(píng)論 1 299
  • 正文 為了忘掉前任益老,我火速辦了婚禮彪蓬,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘捺萌。我一直安慰自己档冬,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,871評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布桃纯。 她就那樣靜靜地躺著酷誓,像睡著了一般。 火紅的嫁衣襯著肌膚如雪态坦。 梳的紋絲不亂的頭發(fā)上呛牲,一...
    開(kāi)封第一講書人閱讀 52,457評(píng)論 1 311
  • 那天,我揣著相機(jī)與錄音驮配,去河邊找鬼娘扩。 笑死着茸,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的琐旁。 我是一名探鬼主播涮阔,決...
    沈念sama閱讀 40,999評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼灰殴!你這毒婦竟也來(lái)了敬特?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 39,914評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤牺陶,失蹤者是張志新(化名)和其女友劉穎伟阔,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體掰伸,經(jīng)...
    沈念sama閱讀 46,465評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡皱炉,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,543評(píng)論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了狮鸭。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片合搅。...
    茶點(diǎn)故事閱讀 40,675評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖歧蕉,靈堂內(nèi)的尸體忽然破棺而出灾部,到底是詐尸還是另有隱情,我是刑警寧澤惯退,帶...
    沈念sama閱讀 36,354評(píng)論 5 351
  • 正文 年R本政府宣布赌髓,位于F島的核電站,受9級(jí)特大地震影響催跪,放射性物質(zhì)發(fā)生泄漏春弥。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,029評(píng)論 3 335
  • 文/蒙蒙 一叠荠、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧扫责,春花似錦榛鼎、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 32,514評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至苏揣,卻和暖如春黄鳍,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背平匈。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,616評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工框沟, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留藏古,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,091評(píng)論 3 378
  • 正文 我出身青樓忍燥,卻偏偏與公主長(zhǎng)得像拧晕,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子梅垄,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,685評(píng)論 2 360