正则表达式用于过滤具有多个关键字的特定URL

时间:2017-03-22 15:33:39

标签: java regex

我想做的很简单。我想过滤某些包含特定关键字的网址。

我现在所做的是这样的事情:

http://.*Examplesite.com/.*(?!Keyword).*

对我来说效果很好。但是,当我想要过滤不同的关键字并忽略它们的顺序时,我会尝试这个:

http://.*Examplesite.com/.*(?!Keyword1|?!Keyword2|...).*

这对我不起作用。也尝试使用“?!”使用Keyword1。 解决这个问题的正确方法是什么? 我只需要像上面输入的那样使用普通的Regex示例。

提前致谢!

1 个答案:

答案 0 :(得分:0)

每当我需要使用正则表达式here执行某些操作时,我都会使用此工具。

通过过滤请求不清楚你的意思。您是想通过简单匹配模式来删除请求,还是要从匹配中捕获值?这将大大改变正则表达式的复杂性。

我注意到你的最后一行似乎暗示你想要一个更复杂的表达。虽然仍然有规律,但这开始包含更复杂的功能,比如回顾上下文匹配,以及真正冒险的简单'路径。

由于我无法发表评论,我会更新此答案,以便在答案时提供解决方案。

编辑:我不认为正则表达式是您正在寻找的解决方案,尤其是如果此列表可能会变大......但我认为这可能是您正在寻找的良好开端。

    (?i)((?!dogs)(?!cats)[\.|/|\:|\w])+

这应该只匹配不区分情况下不包含狗或猫的字符串。我强烈建议您使用URL中的路径,因为这也会将此与任何查询参数误报以及域误报隔离开来。

要添加更多术语或动态构建,只需添加更多(?!word)块。表达式的其余部分与普通的URI字符集匹配,但如果您还需要其他任何内容,只需添加另一个条形' |'并包括你需要支持的角色。

如果你想变得更聪明,我建议你看看另一个解决方案,因为这接近正则表达式的效用极限。