替换文件中的所有链接

这个问题在这里已经有了答案:

  • 正则表达式匹配不包含单词的行吗? 25个答案

  • 尝试~<a href="(.(?!remedy))*?".*?>(.*?)</a>~i

    对于这个问题,你在做什么错误:正则表达式匹配永远如果有可能和每个URL(甚至包含remedy )可以匹配'~<a href=".*?(?!remedy).*?".*?>(.*?)</a>~i'因为您没有指定remedy可能不包含在属性中的任何位置,但是您指定了必须有任何/没有( .*? )的remedy除了那些以<a href="remedy"开头的url之外,任何url都是这种情况。 希望能理解...


    我可能会使用这个:

    <a href="(?:(?!remedy)[^"])*"[^>]*>([^<]*)</a>
    

    最有趣的部分是这样的:

    "(?:(?!remedy)[^"])*"
    

    每当[^"]将要消耗另一个字符时,它就会向前查看,以确认它不是单词remedy的第一个字符。使用[^"]代替. 阻止它看结束报价之外的任何内容。 我也冒着替换你的.*?的自由.*? 否定字符类。 这也是为了达到同样的目的,将比赛保持在你想要的地方。 它也更高效,更强大。

    当然,我假设<a>元素的内容是纯文本,没有更多的元素嵌套在里面。 事实上,这只是我做出的许多简化假设之一。 没有它们,你无法将HTML与正则表达式匹配。

    链接地址: http://www.djcxy.com/p/13385.html

    上一篇: replace all links in file

    下一篇: match any character except word