正則表達式識別標記——包括它之間的標記

許多朋友都用正則表達式去除html標記,或者提取html標記,一般咱們能夠很空易找到提取<>之間間的現成代碼,可是,對於a標記來講,<a 到 </a>之間的內容也是頗有價值的,如何能將整個標記所有提取出來呢?html

 

 

使用這個正則表達式: <a ([~<]|<?!/a)*</a>,你就能夠將某個html中的所有<a標記找出來了,而後將提取來的完成<A標記字符串,送到下一個處理程式序,根據須要提取信息。正則表達式

 

正則在使用上很是方便,像下面這些正則都是很經常使用的:htm

 

[^\x00-\xff] //雙字節字符(包括漢字在內)字符串

[\u4e00-\u9fa5] //中文字符英文

\n\s*\r  //空白行mail

^\s*|\s*$   //首尾空白字符字符

^[a-zA-Z][a-zA-Z0-9_]{4,15}$  //賬號:字母開頭,5-16字節,字母數字可加下劃線浮點數

\d{3}-\d{8}|\d{4}-\d{7}  //電話號碼數字

 [1-9][0-9]{4,}  //QQ中文

 [1-9]\d{5}(?!\d)   //郵編

\d{15}|\d{18}  //身份證

\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)* //Email地址

<(\S*?)[^>]*>.*?</\1>|<.*?/>   //HTML標記

\d+\.\d+\.\d+\.\d+  //IP地址

[a-zA-z]+://[^\s]*  //網址URL

 

特定字符串的匹配:

^[A-Za-z]+$//匹配由26個英文字母組成的字符串

^[A-Z]+$//匹配由26個英文字母的大寫組成的字符串

^[a-z]+$//匹配由26個英文字母的小寫組成的字符串

^[A-Za-z0-9]+$//匹配由數字和26個英文字母組成的字符串

^\w+$//匹配由數字、26個英文字母或者下劃線組成的字符串

 

特定數字:

^[1-9]\d*$//正整數

^-[1-9]\d*$//負整數

^-?[1-9]\d*$//整數

^[1-9]\d*|0$//非負整數

^-[1-9]\d*|0$//非正整數

^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$//正浮點數

^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$//負浮點數

^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$//浮點數

^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$//非負浮點數

^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$//非正浮點數

 

可是正則也有它的缺點,至少有一個:當html文本很是大的時候,用一個很複雜的正則去提取內容,電腦會卡那麼一小會兒。也許這正是所謂「人無完人」吧。

相關文章
相關標籤/搜索