網(wǎng)站欄目劃分的原則瀏覽器如何推廣自己網(wǎng)站
正則表達(dá)式定義:
? ? ? ? 使用單個字符串來描述,匹配一系列符合某個句法規(guī)則的字符串
正則表達(dá)式的組成:
? ? ? ? 普通字符串: 大小寫字母,數(shù)字,標(biāo)點符號及一些其他符號
? ? ? ? 元字符:在正則表達(dá)式中具有特殊意義的專用字符
正則表達(dá)式不能單獨使用,需要配合一些命令 如 grep sed 等命令?
正則表達(dá)式
我們先創(chuàng)建一個文件用于測試
he was short and fat.
He was wearing a blue polo shirt with black pants.
The home of Football on BBC Sport online.
the tongue is boneless but it breaks bones.12!
google is the best tools for search keyword.
The year ahead will test our political establishment to the li
PI=3.141592653589793238462643383249901429
a wood cross!
Actions speak louder than words#woood #
#woooooood #
AxyzxyzxyzxyzC
I bet this place is really spooky late at night!
Misfortunes never come alone/single.
I shouldn't have lett so tast.
以上字符是我準(zhǔn)備的一個文件的內(nèi)容,等會我們用grep命令使用正則表達(dá)式去檢索內(nèi)容
?文件名稱無所謂,我的叫tarro.txt
?grep
?我們使用grep查詢里面某一個指定的字符串? the
grep 'the' tarro.txt??
里面每行帶有the字符串的就出來了
如果想知道我們查找的字符串在第幾行?
grep -n 'the' tarro.txt??
前面的數(shù)字就是在文件里的行,也就是這段在文件中的幾行幾行
如果想知道在文件中第幾行,并且不區(qū)分大小寫,也就是我們指定的字符串無論大小寫都展示出來
grep -in 'the' tarro.txt?
這樣我們查找出來的就不區(qū)分大小寫了,即使我們查的是小寫the,加了-i 那么大寫小寫都會有
?如果正好相反我們不想查包含指定字符串的行
grep -nv 'the' tarro.txt?
-v就是反向查找,我們后面指定的字符串就反過來,就查找不帶他們的行,反向查找不包含the的行
?利用中括號[]來查找集合字符
[] ---里面無論有幾個字符,都僅代表一個字符,為‘或’關(guān)系
[^] ? --- 括號里面的‘^’是取反的意思
查找包含shirt 或short的行?
grep -n 'sh[io]rt' tarro.txt
可以看到他們中級的字符不一樣,我們使用了查找? 以sh? 開通? rt結(jié)尾,中間o或者i? 兩個就全出來了
查找重復(fù)單個字符‘oo’的行
grep -n 'oo' test.txt?
里面只要是兩個oo相連的字符串就被查詢出來了?
查找‘oo’前不是‘w’的行?
grep -n '[^w]oo' tarro.txt?
去掉了w開頭的,那為什么#woood # 和 #woooooood # 沒被去掉,因為他們相連的字符串是以#開頭的,你可以和上一個比對一下
查找‘oo’前不是小寫字母的行?
grep -n '[^a-z]oo' tarro.txt
現(xiàn)在前面小寫的a-z開通的都被去掉了,F是大寫的所以還在?
查找‘oo’前不是大寫字母的行
grep -n '[^A-Z]oo' tarro.txt?
剛剛那個F開頭的就沒了,就剩下一些小寫開頭的行了
查找包含數(shù)字的行
?grep -n '[0-9]' tarro.txt?
上圖只要是行內(nèi)帶有數(shù)字的行就被查出來了?
?查找行首^與行尾字符$
小數(shù)點‘.’在正則表達(dá)式中為元字符,需要使用轉(zhuǎn)義字符‘\’將其轉(zhuǎn)化為普通字符
查找以小數(shù)點‘.’結(jié)尾的行。
grep -n '\.$' tarro.txt
查找空行?
grep -n '^$' test.txt?
查找以‘w’開頭,‘d’結(jié)尾共4個字符的行?
grep -n 'w..d' tarro.txt
查詢至少包含兩個o以上的字符串
grep -n 'ooo*' tarro.txt??
查找以‘w’開頭,中間至少包含一個‘o'的,‘d’結(jié)尾的行
grep -n 'woo*d' tarro.txt??
查找以‘w’開頭,‘d’結(jié)尾 中間字符可有可無 的行?
grep -n 'w.*d' test.txt?
查詢?nèi)我鈹?shù)字的行?
grep -n '[0-9][0-9]*' test.txt?
??查找連續(xù)字符范圍{}
使用'.' 和'*'可以設(shè)置零個或無限多個重復(fù)的字符
如果要限制一個范圍則使用‘{}’
查看2個o的字符?
grep -n 'o\{2\}' test.txt?
查看w開頭,d結(jié)尾,中間為2-5個o的字符串
grep -n 'wo\{2,5\}d' test.txt?
查看w開頭,d結(jié)尾,中間為2以上o的字符串
grep -n 'wo\{2,\}d' test.txt??
基礎(chǔ)正則表達(dá)式的常見元字符
\b ? 單詞的開頭或結(jié)尾,只匹配一個位置,不匹配分隔標(biāo)點符號和空格 ? ?\bHello\b
\d ? 一個數(shù)字,等價于 [0-9] ? ?0\d\d-\d{8} 固定電話
* ? ? ?數(shù)量,它前面的內(nèi)容以連續(xù)使用的任意次數(shù)以達(dá)到整個表達(dá)式匹配,可以是0次匹配 ?.*?
+ ? ? 和* 類似,但至少匹配1次, 匹配一個或多個 ? ? \d+
? ? ?和上面兩個類似,重復(fù)0次或一次
. ? ? ?匹配除了換行符以外任意字符 ?
\s ? ?匹配任意的空白符、制表符、換行符、中文全角空格等
\w 匹配字母、數(shù)字、漢字或者下劃線
^ ? 用來查找的字符串的開頭 ? ^\d{5,12}$ ? ?5~12位的QQ
$ ? 用來查找的字符串的結(jié)尾
{n} ? ? ? 前面必須連續(xù)重復(fù)匹配n次,\d{8} ? \bw{6}\b 剛好6個字符的單詞
{n,m} ? 前面必須連續(xù)重復(fù)匹配n~m次,
{n,} ? ? ? 前面必須連續(xù)重復(fù)匹配n~更多次,
\ ? 如果需要查找元字符,需要轉(zhuǎn)義?
[] ? 里面的字符可以不用轉(zhuǎn)義,用來定義匹配集合 ? [?.*()]3.擴展正則表達(dá)式----egrep、awk命令支持
3.1 擴展正則表達(dá)式的常見元字符
+?? ??? ?重復(fù)一個或者一個以上的前一個字符??? ??? ?零個或者一個的前一個字符
|?? ??? ?使用或者(or)的方式找出多個字符
()?? ??? ?查找“組”字符串
()+?? ??? ?辨別多個重復(fù)的組