正则表达式/ something / <any alphanumeric =“”和=“” - =“”> / </any>

时间:2013-03-13 05:59:16

标签: java regex

我想要一个比较字母数字和“ - ”的正则表达式。并从下面的字符串返回123ABC-4CDE56。我试过下面的代码,但它没有用。

            String regex = "^/[a-zA-Z0-9-_]+$";

        Pattern pattern = Pattern.compile(regex);

        String str = "/something/123ABC-4CDE56/somethingmoretobeignored";

        Matcher matcher = pattern.matcher(str);

        if(matcher.reset(str).find()){
            System.out.println(matcher.group(1));
        }

1 个答案:

答案 0 :(得分:1)

^$分别表示行的开头和结尾。所以:

String regex = "/[a-zA-Z0-9-_]+/";

另外,你说的是.group(1),这会返回方括号()中的第一个东西,它没有。{所以你想把你的正则表达式改为:

String regex = "/([-a-zA-Z0-9_]+)/";

正确匹配字符串的开头和结尾:

String regex = "(^|/)([-a-zA-Z0-9_]+)(/|$)";

现在请记住,您必须使用.group(2)

同样somethingsomethingmoretobeignored都是字母数字,可能会忽略小写:

String regex = "(^|/)([A-Z0-9_]+)(/|$)";