日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

對(duì)話 UNIX,第 9 部分: 正則表達(dá)式( 二 )


Catwoman
Batman
The Tick
Black Cat
Batgirl
Danger Girl
Wonder Woman
Luke Cage
The Punisher
Ant Man
Dead Girl
Aquaman
SCUD
Blackbolt
Martian Manhunter
但是,對(duì)于以下這些情況,您該如何處理?只希望得到那些開頭為“Bat的單詞;或者以“bat、“Bat、“cat或“Cat開頭的單詞?或者希望知道有多少漫畫復(fù)仇者的名字以“man結(jié)束 。在這些實(shí)例中,類似于上述三個(gè)示例的簡(jiǎn)單字符串搜索將無法滿足要求,因?yàn)檫@些搜索不區(qū)分位置 。
位置、位置、位置和備選項(xiàng)
正則表達(dá)式可以 過濾特定的位置,例如行的開始或結(jié)束,以及單詞的開始和結(jié)束 。正則表達(dá)式(通常簡(jiǎn)寫為 regex)還可以描述:備選項(xiàng)(您可將其稱為“this或“that);固定長(zhǎng)度、可變長(zhǎng)度或不定長(zhǎng)度的重復(fù);范圍(例如,“a-m 之間的任意字母);還有字符的類別或種類(“可打印字符或“標(biāo)點(diǎn)符號(hào)),以及其他技術(shù) 。
表 1 顯示了一些常用的正則表達(dá)式操作符 。您可以連接表 1 中顯示的元素(以及其他操作符)并加以組合使用,從而構(gòu)建(非常)復(fù)雜的正則表達(dá)式 。
表 1. 常用的正則表達(dá)式操作符
操作符用途.(句號(hào))匹配任意單個(gè)字符 。^(脫字號(hào))匹配出現(xiàn)在行首或字符串開始位置的空字符串 。$(美元符號(hào))匹配出現(xiàn)在行末的空字符串 。A 匹配大寫字母 A 。a 匹配小寫字母 a 。d 匹配任意一位數(shù)字 。D 匹配任意單個(gè)非數(shù)字字符 。w 匹配任意單個(gè)字母數(shù)字字符,同義詞是 [:alnum:] 。[A-E] 匹配任意大寫的 A、B、C、D 或 E 。[^A-E] 匹配除 A、B、C、D 和 E 之外的任意字符 。X? 匹配出現(xiàn)零次或一次的大寫字母 X 。X* 匹配零個(gè)或任意個(gè)大寫 X 。X匹配一個(gè)或多個(gè)字母 X 。X{n} 精確匹配 n 個(gè)字母 X 。X{n,m} 匹配最少 n 個(gè)并且不超過 m 個(gè)字母 X 。如果省略 m,表達(dá)式將嘗試匹配最少 n 個(gè) X 。(abc|def)匹配一連串的(最少一個(gè)) abc 或 def;abc 和 def 將匹配 。以下是一些使用 grep 作為搜索工具的正則表達(dá)式示例 。許多其他 UNIX 工具,包括交互式編輯器 vi 和 EMacs、流編輯器 sed 和 awk,以及所有現(xiàn)代編程語言都支持正則表達(dá)式 。在您學(xué)會(huì)正則表達(dá)式的語法(也許相當(dāng)晦澀)之后,就可以將您的專業(yè)知識(shí)靈活運(yùn)用到不同的工具、編程語言和操作系統(tǒng) 。
查找以“Bat開頭的名稱
要查找以“Bat開頭的名稱,請(qǐng)使用:
grep -E '^Bat'
可以使用 -E 選項(xiàng)來指定正則表達(dá)式 。^(脫字號(hào))字符匹配行首或字符串的開頭,這是一個(gè)出現(xiàn)在每行或每個(gè)字符串開頭字符之前的假想字符 。字母 B、a 和 t 只具有字面含義并且僅匹配那些特定的字符 。因此,命令 grep -E '^Bat' 將生成:
Batman
Batgirl
由于許多 regex 操作符也為 Shell 所使用(其中一些具有不同的用途,另外一些則有類似的用途),因此一個(gè)好的習(xí)慣是使用單引號(hào)將命令行中的每個(gè) regex 括起來,以保護(hù) regex 操作符免遭 Shell 的誤解 。例如,*(星號(hào))和 $(美元符號(hào))都是 regex 操作符,并且對(duì)于您的 Shell 具有特殊的含義 。
查找以“man結(jié)尾的名稱
要查找以“man結(jié)尾的名稱,可以使用 regex man$ 來匹配序列 m、a 和 n,并且后面緊接與 regex 操作符 $ 匹配的行(字符串) 。
查找空行
基于 ^ 和 $ 的作用,您可以使用 regex ^$ 來查找空行(相當(dāng)于在開始之后立即結(jié)束的行) 。
備選項(xiàng)或集合操作符
要查找以“bat、“Bat、“cat或“Cat開頭的單詞,可以使用以下兩個(gè)技巧 。首先是備選項(xiàng),如果備選項(xiàng)中的任意 模式匹配,都會(huì)產(chǎn)生匹配的結(jié)果 。例如,命令:
grep -E '^(bat|Bat|cat|Cat)' heroes.txt

推薦閱讀