我有以下示例字符串:
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));
}
非常感谢任何帮助。
答案 0 :(得分:1)
这实际上对我来说很匹配,但它会返回这个,这不是你想要的:
thing I want" some more random text term "thing I want"
这种情况正在发生,因为你的正则表达式允许捕获组包含引号,所以没有办法描述组的结尾并且它消耗了字符串的其余部分。您可以按如下方式阻止此操作(假设引号是必需的):
String regex = "term\\s?\\\"([^\\n\\r\"]*)\\\"";