为目标加上链接的正则表达式

作者:enenba | 发表于:2012-02-17 09:17 | 分类:正则表达式

目的:用来匹配数据库中的内容,以“菊花茶”为例,想为菊花茶加上超链接。
需要替换的文本举例及规则说明:
1、我爱喝菊花茶,<a href="#">菊花茶</a>是我的最爱。【当文本中目标词已经有链接时,不再加上链接。】

2、我<a href="#">爱喝菊花茶</a>,菊花茶是我的最爱。【这种情况下,给第一个出现的非锚文本的菊花茶加上链接。】

3、我爱喝菊花茶,菊花茶是我的<a href="#">最爱</a>。【这种情况下,给第一个菊花茶加上链接就行,后面的不用,也就是只匹配第一个。】

4、我爱喝<a href="#">菊花</a>茶,菊花茶是我的最爱。【这种情况下,给第一个出现的非锚文本的菊花茶加上链接。】

5、我爱<a href="#">喝菊花</a>茶,菊花茶是我的最爱。【这种情况下,给第一个出现的非锚文本的菊花茶加上链接。】其实就是找“菊花茶”,如果这个词已经有链接了,那跳过,如果没有,那么给第一个出现的加上链接。

 

 

这是我碰到的比较有水平的问题,
假设加的新链接是<a href='new'></a>, 正则表达式如下:
### Perl ###

$str=~s/^((.(?!>菊花茶<))*?)菊花茶(?![^<]*<\/|.*>菊花茶<)/\1<a href='new'>菊花茶<\/a>/;

### JS ###

text.replace(/^((.(?!>菊花茶<))*?)菊花茶(?![^<]*<\/|.*>菊花茶<)/,"$1<a href='new'>菊花茶<\/a>");


##########测试结果:

1.我爱喝菊花茶,<a href="#">菊花茶</a>是我的最爱。

2.我<a href="#">爱喝菊花茶</a>,<a href='new'>菊花茶</a>是我的最爱。

3.我爱喝<a href='new'>菊花茶</a>,菊花茶是我的<a href="#">最爱</a>。

4.我爱喝<a href="#">菊花</a>茶,<a href='new'>菊花茶</a>是我的最爱。

5.我爱<a href="#">喝菊花</a>茶,<a href='new'>菊花茶</a>是我的最爱。

#########需要其他格式的自己试着改。

上一篇: 今天我终于把我enenba的w3c认证做上去了   |   下一篇:解释一个判断邮件的正则表达式» 标签: 正则 正则表达式 正则表达式教程

评论: