0

我正在尝试匹配一个 url 的子域,使用http://([a-z0-9]*.)?example.com/.*它非常适合这些情况。

http://example.com/index.html
http://test.example.com/index.html
http://test1.example.com/index.html
http://www.example.com/122/index.html

但问题是它也与此 URL 匹配。 http://www.test.com/?q=http://example.com/index.html

如果具有另一个域的 URL 具有匹配的路径中的 URL。任何人都可以告诉我如何仅匹配当前域。获取主机将起作用,但我需要匹配完整的 URL。

4

2 回答 2

3

你知道.匹配任何字符吗?

如果您使用正则表达式

http://([a-z0-9]*\.)?example\.com/.*

(或者,作为 Java 字符串)

"http://([a-z0-9]*\\.)?example\\.com/.*"

它应该可以工作,因为现在该?q=部分将不匹配。

这假设您正在使用.matches()强制整个字符串匹配的方法。否则,^在正则表达式的开头添加 a。

于 2012-09-16T09:37:07.097 回答
1

最简单的方法是:

^http://([a-z0-9]*?\.)?example\.com/.*

^ 匹配字符串中的起始位置。不要将它与 [^ ] 混淆。

于 2012-09-16T09:37:03.670 回答