正則表達式(一)

本文作一些簡短描述, 不正確之處, 歡迎指出正則表達式

正則表達式有不少流派 , 不一樣流派之間, 元字符不同,表現的形式也不同, 本文講述的perl流字符串

一、 匹配字符變量

[abc]   字符組, 能夠理解字符組有本身一套語法, 在字符組類, 量詞 ? *  + 沒有特殊含義, 通配符 .  也米有特殊含義perl

字符組內經常使用的特殊字符有  -  ^  , 要做爲通常字符使用的時候須要轉義。語法

- 表示範圍 例如 [0-9] 表示 0, 1,2,3 ......9 中的任何一個數字。像 [1-4] 和 [1234] 是同樣的。可是 - 放在字符組在最前面的時候, 沒有特殊含義tab

^ 表示非, 也就是否是字符組裏的任何一個元素co

[^u]表示匹配一個不是u的字符, 須要注意的是, 匹配的仍是一個字符, 要是什麼字符都沒有, 匹配失敗字符

多選結構 | (能夠有多個分支)數字

例如 , frist|second 表示frist 或者是second中的任意一個   或者是 t(o|e)r 等同於 tor| ter ab

 

二、 量詞  ? * +

?   有一個或者是0個

*   有n個  n>=0

+   有n個  n>1

{m,n} 表示  在 >=m    <=n  之間

 

三、 邊界  \b  ^   $

\b 表示單詞邊界

^  表示字符串開始

$  表示字符串結尾

^   $  會受到 /m /s 的影響

舉例: ^$ 表示空行(沒有任何字符, 包括空行)

 

四、 環視

(?=  確定正序

(?<= 確定逆序

(?!  否認正序

(?<! 否認逆序

環視並不會消耗任何字符, 意思就是下一次的匹配位置包括環視匹配的內容在內

舉個例子說明下環視的做用

henosteven not henosteve  要匹配henosteven的話 能夠這麼寫 heno(?=steven), 表示匹配了heno以後, 看看後面的內容是否是匹配steven要是的話, 匹配成功, 不然失敗 , 固然匹配中沒有必要這麼寫

五、 字符組

(abc) 這是一個總體, 並且, 匹配成功後的值, 會存入對應的變量中, \1 \2  \3之類的

有時候不想存入, 可使用(?:abc)

出現(abc(cd)) 這樣的嵌套結構, 要是匹配ok的話, \2 表示cd

六、 一些經常使用的

. 匹配單個任意字符

\b \B 單詞邊界, 大寫表示相反

\w \W   字母數字下劃線 , 大寫表示相反

\s \S  空白(空格, tab , nl) , 大寫表示相反

\d \D  數字, 大寫表示相反

 \i 忽略大小寫

相關文章
相關標籤/搜索