正則表達式的基本應用
比如有三個單詞 hi nihi wohime 如果我們需要匹配到hi可以直接輸入hi 匹配, 但是我們註意到這樣匹配會把hi nihi wohime 三個單詞裏面的hi同事匹配到。(註意:這裏輸出為hi hi hi 三個hi).
如果我們只想要匹配到只含有hi的這個單詞,也就是h開頭i結尾中間沒有任何其他單詞。就需要使用\b: 用法\bhi\b (這裏表示配置h開頭i結尾中間沒有任何其他單詞的也就是hi這個單詞)
\b :一般成之為元字符,相當於一個占位符,匹配單詞的開頭和結尾.
如果我們想匹配hi並且他前面有兩個單詞這裏就會用到 . 。也是元字符,他表示:
所以現在有 nihao ni nihaome ni hao
如果需要匹配nihaome就可以使用\bnihaome\b,或者ni.*me ni.*e
這裏需要註意的是:如果一行中有 nia zhuzai zhongguo ni hao zhongguo ni ai zhongguo這樣的幾個單詞,想要匹配ni xxxx zhongguo的話 就可以結合前面的知識使用 \bni\b.*\bzhongguo\b 或者\bni\b .* zhongguo這裏第二個需要註意原文中ni後面只有一個空格hao後面一個空格所以這裏最多也只能隔一個空格。
如果想要匹配0XX-XXXXXXX加入這裏表示電話號碼,也就是X只能代表數字。就要使用\d
\d 這裏的\d表示匹配任意一個數字(也就是0-9裏面的任意一個數字)
0\d\d-\d\d\d\d\d\d\d\d(註意這裏面有一個 - 這個 - 沒有任何其他意義只是代表本身,也就是在某個位置他要出現)
當然為了簡便寫法,我們這裏可以使用一個簡便寫法:0\d{2}-\d{7} 註意:這裏的{7}7代表包括前面的\d一共出現7次數字。
\w 匹配字母或數字或下劃線或漢字
比如:\ba\w*\b 表示a開頭的任意單詞,這裏需註意的是加入有 awd aww a12 這裏都會匹配到(*不是匹配\w匹配到的那個數字或者單詞或者下劃線任意次,他是指的是\w 這一類數據可以出現任意次)
\d+匹配1個或更多連續的數字。這裏的+是和*類似的元字符,不同的是*匹配重復任意次(可能是0次),而+則匹配重復1次或更多次。
\b\w{6}\b 匹配剛好6個字符的單詞。wdf_46 ______ 123456 qwerty 都可以被匹配
\s 匹配任意的空白符
^ $
元字符^(和數字6在同一個鍵位上的符號)和$都匹配一個位置,這和\b有點類似。^匹配你要用來查找的字符串的開頭,$匹配結尾。這兩個代碼在驗證輸入的內容時非常有用,比如一個網站如果要求你填寫的QQ號必須為5位到12位數字時,可以使用:^\d{5,12}$。這裏需要註意在某些主機是不支持這種用法,需要使用perl的正則引擎比如linux的grep就需要加上-P才能正常是使用 egrep -P "^\d{5,12}$" /tmp/1
註意 如果在使用過程中需要使用元字符本身比如 as\sd 就需要在元字符前面再加一個\ as\\sd
常用的重復方式
* | 重復零次或更多次 |
+ | 重復一次或更多次 |
? | 重復零次或一次 |
{n} | 重復n次 |
{n,} | 重復n次或更多次 |
{n,m} | 重復n到m次 |
^\w+:這裏需要註意的是+匹配的是前面的類型!!!!!
[]:用法匹配[]裏面給出的任意一個!比如: abb a8b ab8h a[b8h]b 只能匹配到 abb a8b 他只能匹配裏面給的一個,如果多個都出現了就無法匹配.
理解 :\(?0\d{2}[) -]?\d{8} :提醒"(" 是元字符。
\d{5}-\d{4}|\d{5}這個表達式用於匹配美國的郵政編碼。美國郵編的規則是5位數字,或者用連字號間隔的9位數字。之所以要給出這個例子是因為它能說明一個問題:使用分枝條件時,要註意各個條件的順序。如果你把它改成\d{5}|\d{5}-\d{4}的話,那麽就只會匹配5位的郵編(以及9位郵編的前5位)。原因是匹配分枝條件時,將會從左到右地測試每個條件,如果滿足了某個分枝的話,就不會去再管其它的條件了。 這裏需要特別註意的是如果你輸入一個 23827-easasd123 匹配的結果是23827 之前我理解的是會匹配到26827- 這裏應該這樣理解 (\d{5}-\d{4})|(\d{5}) 這裏的"|&quo
正則表達式的基本應用