正则表达式识别标记——包括它之间的标记

二次信任 提交于 2020-03-12 01:06:40

许多朋友都用正则表达式去除html标记,或者提取html标记,通常我们可以很空易找到提取<>之间间的现成代码,但是,对于a标记来说,<a 到 </a>之间的内容也是很有价值的,如何能将整个标记全部提取出来呢?

 

 

使用这个正则表达式: <a ([~<]|<?!/a)*</a>,你就可以将某个html中的全部<a标记找出来了,然后将提取来的完成<A标记字符串,送到下一个处理程式序,根据需要提取信息。

 

正则在使用上非常方便,像下面这些正则都是很常用的:

 

[^\x00-\xff] //双字节字符(包括汉字在内)

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

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

^\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文本非常大的时候,用一个很复杂的正则去提取内容,电脑会卡那么一小会儿。也许这正是所谓“人无完人”吧。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!