如果我有一个字符串,如
lotsofcrap “somethingimportant” moreotherstuff
是否可以让Regex匹配“”,不包括引号之间的任何内容?所以检测它的方法就像“。*”,但这将返回“重要的东西”而不仅仅是纯粹的重要的东西
答案 0 :(得分:4)
"(.*)"
您可以使用括号来创建捕获组。如何访问它取决于您使用的语言/库 - 通常捕获组在类似Perl的语言中以$1
或\1
提供。例如,在Perl中:
'hello "world" !!!' =~ /"(.*)"/;
print "$1\n";
答案 1 :(得分:1)
如果您的正则表达式引擎支持零宽度断言(后视和前瞻),
(?<=")[^"]*(?=")
将匹配一系列非引号字符,其中前面有引号,后面引用引号。
然而,这很愚蠢。你应该只是
"([^"]*)"
匹配所有内容,包括引号,然后将第1组(括号组)拉出匹配。
答案 2 :(得分:1)
尝试"(.*?)"
?
表示.*
将根据需要展开(直到与下一个匹配)“在这种情况下。”
Java代码:
static String regex = "\"(.*?)\"";
static Pattern p = Pattern.compile(regex);
public static List<String> getMatches(String inputText) {
Matcher m = p.matcher(inputText);
List<String> list = new ArrayList<String>();
while(m.find()){
list.add(m.group(1));
}
return list;
}