Java Regex找不到任何匹配项

时间:2018-02-11 11:50:52

标签: java regex match

我有以下示例字符串:

some random text term "thing I want" some more random text term "thing I want"

我正在使用以下正则表达式:

term\s?\"?([^\n\r]*)\"?

然而,我的匹配器无法找到任何匹配,我无法弄清楚原因。 这是我正在使用的代码:

    import java.util.*;
    import java.util.regex.Pattern;
    import java.util.regex.Matcher;

    ArrayList<String> list = new ArrayList<String>();
    String regex = "term\\s?\\\"?([^\\n\\r]*)\\\"?";
    Pattern pattern = Pattern.compile(regex);
    Matcher matcher = pattern.matcher(string);
        if (matcher.find()) {
            list.add(matcher.group(1));
        }

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

这实际上对我来说很匹配,但它会返回这个,这不是你想要的:

thing I want" some more random text term "thing I want"

这种情况正在发生,因为你的正则表达式允许捕获组包含引号,所以没有办法描述组的结尾并且它消耗了字符串的其余部分。您可以按如下方式阻止此操作(假设引号是必需的):

String regex = "term\\s?\\\"([^\\n\\r\"]*)\\\"";