帮忙写个简单的正则表达式

来源:百度知道 编辑:UC知道 时间:2024/06/03 14:48:51
目的:用来匹配数据库中的内容,以“菊花茶”为例,想为菊花茶加上超链接。

需要替换的文本举例及规则说明:

1、我爱喝菊花茶,<a href="#">菊花茶</a>是我的最爱。【当文本中目标词已经有链接时,不再加上链接。】
2、我<a href="#">爱喝菊花茶</a>,菊花茶是我的最爱。【这种情况下,给第一个出现的非锚文本的菊花茶加上链接。】
3、我爱喝菊花茶,菊花茶是我的<a href="#">最爱</a>。【这种情况下,给第一个菊花茶加上链接就行,后面的不用,也就是只匹配第一个。】
4、我爱喝<a href="#">菊花</a>茶,菊花茶是我的最爱。【这种情况下,给第一个出现的非锚文本的菊花茶加上链接。】
5、我爱<a href="#">喝菊花</a>茶,菊花茶是我的最爱。【这种情况下,给第一个出现的非锚文本的菊花茶加上链接。】

其实就是找“菊花茶”,如果这个词已经有链接了,那跳过,如果没有,那么给第一个出现的加上链接。

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

### 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>是我的最爱。

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

难度比较大,需要后台进行处理的。找到指定的链接,然后逻辑处理。这是我碰到的比较有水平的问题,假设加的新链接是<a