没有结束斜杠的url的正则表达式模式,并在url中排除某些文本

时间:2013-03-19 16:50:46

标签: regex

我正在寻找preg_match_all模式来查找页面上没有尾部斜杠的所有网址。

例如:如果我有

a href="/testing/abc/">end with slash

a href="/testing/test/mnl">no ending slash

结果将是#2。解决方案发布在find pattern for url with no ending slash

我尝试修改提供的模式,以排除包含“图片”或“.pdf”的网址但尚无运气。

感谢。

2 个答案:

答案 0 :(得分:2)

这个应该符合您的需求(demo):

href="(?:(?<!images).(?!(?:[.]pdf|/)"))*?"
  • (?:) =非捕获组合
  • (?<!images). =任何不以images
  • 开头的字符
  • .(?!(?:[.]pdf|/)") =任何字符未跟.pdf"/"
  • *? = 匹配尽可能短

答案 1 :(得分:1)

通过修改其他问题提供的答案,我找到了一种排除具有.pdf的链接的方法。 仍在看为什么它不会与图像示例相匹配。

href=(['"])[^\s]+(?<![\/]|.pdf)\1

链接到工作测试http://www.rubular.com/r/jmBVstpGZD