0

我想要一个比较字母数字和“-”的正则表达式。并从下面的字符串返回 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));
        }
4

1 回答 1

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_]+)(/|$)";
于 2013-03-13T06:03:49.470 回答