作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这是 JavaScript 正则表达式。
regex = /(http:\/\/[^\s]*)/g;
text = "I have http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd and I like http://google.com a lot";
matches = text.match(regex);
console.log(matches);
我在结果中得到了两个 url。但是我想消除所有以 .dtd 结尾的网址。我该怎么做?
请注意,我是说应该删除以 .dtd 结尾的文件。这意味着像 http://a.dtd.google.com 这样的 url应该通过。
最佳答案
最好的方法是使用负面回顾(在支持它们的语言中):
/(?>http:\/\/[^\s]*)(?<!\.dtd)/g
?>
在第一个括号中使其成为一个停止正则表达式引擎回溯的原子分组 - 因此它将像现在一样匹配完整的 URL,并且如果/当下一部分失败时它不会尝试返回并匹配更少。
(<!\.dtd)
是一个负面的回顾,只有在 \.dtd
时才匹配不匹配以该位置结尾(即,URL 不以 .dtd
结尾)。
对于不这样做的语言(例如 JavaScript),您可以改为执行否定前瞻,这有点难看并且通常效率较低:
/(http:\/\/(?![^\s]*\.dtd\b)[^\s]*)/g
将匹配http://
, 然后向前扫描以确保它不以 .dtd
结尾,然后回溯并再次向前扫描以获得实际匹配项。
一如既往,http://www.regular-expressions.info/是获取更多信息的良好引用
关于正则表达式 : how to eliminiate urls ending with . dtd,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2552927/
这是 JavaScript 正则表达式。 regex = /(http:\/\/[^\s]*)/g; text = "I have http://hibernate.sourceforge.net/h
我是一名优秀的程序员,十分优秀!