使用正则表达式匹配两个URL

时间:2011-09-02 17:57:45

标签: java regex

我有一个网址列表,我希望使用正则表达式将这些网址与此网址匹配

http://investor.somehost.com/*

这里*意味着之后的任何事情,或者你可以说它是一个通配符......

String href = url.getURL();

这里href包含所有网址。

假设firstentry包含上面的url(http://investor.somehost.com/*

那么如何将href与firstentry进行比较,以便如果href以此url开头,那么就这样做......

3 个答案:

答案 0 :(得分:6)

如果您只想确定String是否以特定前缀开头,请使用startsWith(String prefix)

示例:

String href = "http://google.com/mail";
if(href.startsWith("http://google.com")) {
    //... Do stuff
}   

答案 1 :(得分:1)

"^http://investor\\.somehost\\.com/"

将匹配以http://investor.somehost.com/开头的任何字符串。如果您只想要有效的网址,可以使用

"^http://investor\\.somehost\\.com/(([-._~:@!$&'()*+,;=a-zA-Z0-9]|%[0-9a-fA-F][0-9a-fA-F])+(/([-._~:@!$&'()*+,;=a-zA-Z0-9]|%[0-9a-fA-F][0-9a-fA-F])*)*)?"

如果您想允许查询,

"^http://investor\\.somehost\\.com/(([-._~:@!$&'()*+,;=a-zA-Z0-9]|%[0-9a-fA-F][0-9a-fA-F])+(/([-._~:@!$&'()*+,;=a-zA-Z0-9]|%[0-9a-fA-F][0-9a-fA-F])*)*)?(\?([-._~:@!$&'()*+,;=a-zA-Z0-9]|%[0-9a-fA-F][0-9a-fA-F])*)?"

如果你还需要片段,

"^http://investor\\.somehost\\.com/(([-._~:@!$&'()*+,;=a-zA-Z0-9]|%[0-9a-fA-F][0-9a-fA-F])+(/([-._~:@!$&'()*+,;=a-zA-Z0-9]|%[0-9a-fA-F][0-9a-fA-F])*)*)?(\?([-._~:@!$&'()*+,;=/?a-zA-Z0-9]|%[0-9a-fA-F][0-9a-fA-F])*)?(#([-._~:@!$&'()*+,;=/?a-zA-Z0-9]|%[0-9a-fA-F][0-9a-fA-F])*)?"

如果您不想允许字符串的尾随(非URL)部分,请使用$结束其中任何一项。

答案 2 :(得分:0)

我在this post上有一个正则表达式,提供正则表达式来提取url no matyer的域部分,其中mau出现在字符串中。它用于javascript,因此删除前导'/'amd尾随'/ ig'。使用它来提取域并使用简单的等号检查进行比较。