我有一个网址列表,我希望使用正则表达式将这些网址与此网址匹配
http://investor.somehost.com/*
这里*意味着之后的任何事情,或者你可以说它是一个通配符......
String href = url.getURL();
这里href包含所有网址。
假设firstentry包含上面的url(http://investor.somehost.com/*
)
那么如何将href与firstentry进行比较,以便如果href以此url开头,那么就这样做......
答案 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'。使用它来提取域并使用简单的等号检查进行比较。