gpt4 book ai didi

php 正则表达式 - 仅在两个因素之间匹配

转载 作者:行者123 更新时间:2023-11-27 23:57:53 26 4
gpt4 key购买 nike

我有一种情况,我只需要在满足以下条件时更改 HTML 字符串:

  • 必须在标签之间
  • href 不能以 http://或 javascript 开头:
  • href不能以.html或.htm结尾

现在的问题是,这必须是一个大字符串中的全局正则表达式搜索,并且它可以在一个字符串中找到多个解决方案。

例如:

<a href="http://www.google.be">Google</a>
<a href="javascript:node(133)">Go there</a>

应该被忽略

<a href="testpage.html">Test</a>
<a href="testpage2.htm">Test page 2</a>

也应该被忽略,但是

<a href="file.mp3">File</a>
<a href="stuff.flv">Stuff</a>

应该被捕获。

我知道用 HTML 做正则表达式会把你的灵魂出卖给魔鬼,但我在这个解析器上已经太先进了,我会花太长时间来完全抛弃它。

那么有没有一种方法可以同时检查字符串的开头和结尾,而不知道字符串本身是在开头还是结尾(因此几乎不可能使用 ^ 或 $)。

最佳答案

这是一个可能对您有所帮助的正则表达式。

<a href="(?!http:\/\/)(?!javascript:)[\w\s,/-]+(?!.html?)\.\w+">.+?<\/a>

我使用否定前瞻来执行您的规则。

(?!http:\/\/) 将确保链接不以 http:// 开头。 (?!javascript:) 与 javascript 规则类似。

然后,它会控制路径的结尾,如果它以 htm 或 html 结尾,否定先行将确保字符串不匹配。

您可能需要完成 [\w\s,/-] 部分,它与文件的路径和名称相匹配。我允许字母数字字符,-/_,您可以随意添加您需要的内容。

关于php 正则表达式 - 仅在两个因素之间匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22911429/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com