当前位置:  开发笔记 > 前端 > 正文

正则表达式通过链接替换单词

如何解决《正则表达式通过链接替换单词》经验,为你挑选了1个好方法。



1> Tomalak..:

这很难一步到位.编写单个正则表达式实际上是不可能的.

尝试两步法.

    无论是否已存在其他链接,请在每个"巴黎"周围添加链接.

    找到所有错误嵌套的链接(Paris),并消除内部链接.

第一步的正则表达式很简单:

\bParis\b

第二步的正则表达式稍微复杂一些:

(]+>.*?(?!:))]+>(Paris)

在整个字符串中使用该字符串并将其替换为匹配组1和2的内容,从而有效地删除多余的内部链接.

用简单的词解释正则表达式#2:

查找每个链接(]+>),可选地后跟任何本身不是后跟关闭链接(.*?(?!:))的内容.将其保存到匹配组1中.

现在寻找下一个链接(]+>).确保它在那里,但不要保存它.

现在寻找巴黎这个词.将其保存到匹配组2中.

寻找关闭链接().确保它在那里,但不要保存它.

用第1组和第2组的内容替换所有内容,从而丢失您未保存的所有内容.

该方法假设这些方面条件:

您输入的HTML不会被严重破坏.

你的正则表达式支持非贪婪量词(.*?)和零宽度负前瞻断言((?!:...)).

您只在步骤1中的链接中包含单词"Paris",不包含其他字符.每个" Paris"变为" Paris",否则第二步将失败(直到您更改第二个正则表达式).

BTW:正则表达式#2明确允许这样的结构:

in the capital of France, Paris

剩余链接来自第一步,第二步的替换结果将是:

in the capital of France, Paris

推荐阅读
臭小子
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有