gpt4 book ai didi

正则表达式 : how to eliminiate urls ending with . dtd

转载 作者:行者123 更新时间:2023-12-02 00:41:01 26 4
gpt4 key购买 nike

这是 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/

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