那些有用的正则表达式

1. HTML 标签匹

HTML不是有特别严格编程要求的,因此在匹配时会遇到很多特殊情况需要特殊处理,这里仅仅给出一般化的解决方法: 
【文本】ddd< input name=dir value=”>”>ddd 
【解析】显然,文本中非转义字符>与闭尖括号的提取是难点,不能向往常一样[^>]来提取。 
【表达式】 <(“[^”]*”|’[^’]*’|[^’”>])*> 
“[^”]*”表示提取双括号的内容 
‘[^’]*’表示提取单括号的内容 
    [^’”>] 表示提取其他内容 
【注意】也许你用<.*>也能匹配上述文本,但是实际情况时当你遇到的是ddd< input name=dir value=”>”>ddd< / input>时候,它将匹配全部。

2. 匹配Link
【文本】< a href=”http://www.csdn.net”>my blog < / a > 
【解析】要获取双引号或单引号中间的地址,但不是所有双引号的内容都是Link,“href=”很重要 
【表达式】href\s*=\s*(“[^”]*”|”[^’]*”|[^”’>]+)

三、真实世界中提取URL
【文本】read the comments at http://www.baidu.com/ask_tik/index.html you can find … 
【解析】URL类型包括:māilto, http, https, ftp 
但是有时候文本中并不包含上诉开头,而是直接以www.baidu.com出现。 
【表达式1】 
(ftp|https?)://[-\w]+(.\w[-\w]*)+| 
(?:[a-z0-9]( ? :[-a-z0-9][a-z0-9])?\.)+ 
(?:com\b 
|edu\b 
|gov\b 
|org\b 
|net\b 
|[a-z][a-z]\b) 


[^.!,?:”’<>()[]{}\s\x7F-\xFF]* 
(?:[.!,?]+[^.!.?;”’<>()[]{}\s\x7F-\xFF])* 
)? 
【不包含特殊符号(?!=)的URL的表达式】https?://\w+(.\w+)+(\/\w+)*(.\w+)* 
【包含特殊符号(?!=)的URL简化表达式】 
https?://\w+(.\w*)+(?:\.com)* 
(\/[^”’<>()[]{}\s\x7F-\xFF]*)*

猜你喜欢

转载自my.oschina.net/wellsoschina/blog/1816222