正则表达式懒惰模式

在写BLOG练习程序的时候,考虑到用BBS直接输入可能会更加简洁些。但是如何转换又成了一个问题。

在群里问了问朋友,一致认同使用正则表达式最好。于是又翻起了那篇我觉得很好的正则表达式三十分钟入门,看了很多篇,动手的也就这一次了。。

动起手来才发现不是这么简单,起先由于只考虑到静态链接的规则(其实那时静态写的比这下面写的复杂多了),没有办法又准备写一些动态链接的规则,但是一看动态的格式好像十分复杂,就干脆用.+来匹配了。

 

Code

后来才发现一个很严重的问题。如果其中的链接地址为www.xxx.com的话那么打开链接时,会发现它居然会作为你的子路径打开。

没办法又重新加了一个能够验证协议头的正则(我也不知道有没有2两个字符开头的协议。。。)

Code

当然这个匹配必须在上一个匹配之上。

查看了模仿的博客才发现,原来MAIL地址前是要加mailto://协议头的。

Code

考虑大多数用户习惯直接输入邮件地址不会包含maito://协议头的。所以没有写这个规则了。

后来又发现一个问题如果文中有多个URL的话,由于.+的缘故会导致匹配出许多我们不是我们想要的字符。起先思路一直停留在,其中不能包含[/URL]字符串,

由于尝试了很多次方法,最后才不得不得出一个结论(希望哪位能够指正出是否正确):

 

Code

中括号只能匹配范围。

就是这个简单的问题困扰了我整整两天。

今天群里的朋友提起可以参看别人的URL匹配规则,于是又搜索了一次(比我这详细多了)

认真地看了几次后,终于发现了另一种思维,懒惰模式,匹配尽可能少的字符。

于是最后就可以写成这样:

Code

 

还是浮躁了些,没有认真看完那篇教程。害得自己一直在苦钻牛角尖啊。

posted @ 2008-10-29 18:28  飘扬  阅读(1234)  评论(0编辑  收藏  举报