2011-09-02 271 views
1

我有一个网址列表,我想匹配的URL使用正则表达式匹配两个URL正则表达式

http://investor.somehost.com/*

这里*表示以后什么或者你可以说这是一个通配符这个网址.. 。

String href = url.getURL(); 

这里href包含了所有的url。

了firstEntry假设包含了上述网址(http://investor.somehost.com/*

所以,我怎么能比较HREF了firstEntry与这样,如果以这样的URL HREF然后开始做这件事情......

+0

如果您对正则表达式感兴趣,您可以*查找*'^ http:// investor \ .somehost \ .com'或* match *'http:// investor \ .somehost \ .com (/.*)?'。 – Peteris

回答

6

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

实施例:

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

是的,我可以做到这一点......但是,在URL之后,它意味着什么......因此,任何事情都可以在“investor.somehost.com/(任何东西)”之后出现。所以如果我使用startswith它也会检查*正确。但我想要一些可以匹配这个*的正则表达式...我必须将文本文件中的URL与URL列表进行比较...... – ferhan

+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)部分。

0

我在this post上有一个正则表达式,它提供了正则表达式来提取url no matyer的域部分,它在它出现的字符串中出现。它的JavaScript,所以删除前导'/'amd尾随'/ ig'。使用它来提取域并将它们与简单的equals检查进行比较。