RegEx为链接中的4个值(此或此或此等)

时间:2013-06-21 15:03:27

标签: java regex

对此有点麻烦。

假设我有一个可以包含这些值的链接:

Balearic|Ibiza|Majorca|Menorca

示例1:http://site.com/Menorca

示例2:http://site.com/Ibiza

我只需要一个RegEx来说明链接是否包含其中任何一个(不区分大小写)

有人指向正确的方向 - 它不是特定的语言,但我使用的软件是基于Java的。

非常感谢 - 我会继续努力! :)

4 个答案:

答案 0 :(得分:1)

你可以使用:

// assuming url is your URL variable
if (url.matches("(?i)^http://site\.com/(Balearic|Ibiza|Majorca|Menorca)\b.*$")) {
   // match succeeded
}

(?i)将确保在进行此比较时忽略大小写。

答案 1 :(得分:0)

您的值列表 是有效的正则表达式,只需添加“i”选项,使其不区分大小写,每http://rubular.com/r/euscuu7Fwj

答案 2 :(得分:0)

Here you can find符合您要求的正则表达式:

^http://site\.com/(Balearic|Ibiza|Majorca|Menorca)$

Regular expression image

要在Java中使用它,您可能需要执行以下操作:

String url = "http://site.com/Ibiza";
Pattern p = Pattern.compile("^http://site\.com/(Balearic|Ibiza|Majorca|Menorca)$", Pattern.CASE_INSENSITIVE);
Matcher m = p.matcher(url); // get a matcher object

答案 3 :(得分:0)

通常针对URL的正则表达式不是一个好习惯。

这是一种混合方法。它只会在您的URL路径中查找您的值,从而简化正则表达式并验证URL。不区分大小写。

try {
    URI menorca = new URI("http://site.com/Menorca");
    System.out.println(menorca.getPath().substring(1));
    URI ibiza = new URI("http://site.com/Ibiza");
    System.out.println(ibiza.getPath().substring(1));
    Pattern pattern = Pattern.compile("Balearic|Ibiza|Majorca|Menorca", Pattern.CASE_INSENSITIVE);
    System.out.println(pattern.matcher(menorca.getPath()).find());
    System.out.println(pattern.matcher(ibiza.getPath()).find());
}
catch (URISyntaxException use) {
    use.printStackTrace();
}

输出:

Menorca
Ibiza
true
true