正则表达式 - Java

nam*_*ked 2 java regex

对于字符串值"ABCD_12"(包括引号),我想只提取内容并排除双引号即ABCD_12.我的代码是:

private static void checkRegex()
{
    final Pattern stringPattern = Pattern.compile("\"([a-zA-Z_0-9])+\"");
    Matcher findMatches = stringPattern.matcher("\"ABC_12\"");
    if (findMatches.matches())
        System.out.println("Match found" + findMatches.group(0));
}
Run Code Online (Sandbox Code Playgroud)

现在我尝试过findMatches.group(1);,但只返回字符串中的最后一个字符(我不明白为什么!).

如何只提取留下双引号的内容?

anu*_*ava 6

试试这个正则表达式:

Pattern.compile("\"([a-zA-Z_0-9]+)\"");
Run Code Online (Sandbox Code Playgroud)

要么

Pattern.compile("\"([^\"]+)\"");
Run Code Online (Sandbox Code Playgroud)

您的代码中的问题是错误的+外部右括号.这导致捕获组只捕获1个字符(因为+在外面),这就是为什么你最终只得到最后一个字符.