【发布时间】:2014-03-22 20:44:02
【问题描述】:
我需要一个相当贪婪的正则表达式,它积极匹配不以任何协议开头的字符串,例如“http://”或“ftp://”,同时不匹配以“开头的字符串” www”(当然,或者两者结合)。我对 Java 和正则表达式还很陌生,但我已经设法弥补了这个(这对我不起作用):
([\w'-]+)\.(com|info|net|org).+
但它似乎与“example.com”不匹配。它似乎与“example.com/index.php?q=somequery#something”匹配。如果字符串以一系列字符开头(在我的情况下为“www”或“http://”),我真的不明白如何创建一个不匹配的正则表达式。
感谢任何帮助。
(PS 我试图寻找这个问题的受骗者,但是我找不到与这个问题完全匹配的人。如果这是受骗者,非常抱歉。)
【问题讨论】:
-
注意:您当前的 RegEx 将匹配 URL 中不允许的域后面的空格。此外,您的 RegEx 确实 与您的示例匹配,因此问题在于您的 Java 代码 实现 它。我的猜测是您需要在将字符串编译为 RegEx 对象之前进行双重转义。
-
@tenub 嗯......我已经在这个网站上试过了:regexr.com 并且根据那个网站它不匹配......而且它是否允许通过也没关系空格,我的实现通过空格分割了一个更大的字符串(一条聊天消息),所以我认为我至少现在不必担心这个。