正则表达式从字符串中提取引号中的单词?

时间:2012-11-10 09:09:49

标签: java regex

所以,我想从字符串中提取引号(“)中的单词(或短语) 例如,假设主字符串是:
The quick brown fox "jumped over" the "lazy" dog
我希望能够提取并在变量中存储引号中的单词/短语,即
jumped over
lazy
应该存储在变量中。引用时输入字符串只会加倍引号(没有单引号) 我为此尝试了以下(粗略)代码:

Pattern p = Pattern.compile("\\s\"(.*?)\"\\s");
Matcher m = p.matcher(<String>);
Variable.add(m.group(1));

无论我输入什么,它都会抛出IllegalStateException。我感觉我的正则表达式无法正常工作。 任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:5)

您的代码缺少一些if( m.matches())m.find()来完成这项工作......

此代码:

String in = "The quick brown fox \"jumped over\" the \"lazy\" dog";
Pattern p = Pattern.compile( "\"([^\"]*)\"" );
Matcher m = p.matcher( in );
while( m.find()) {
   System.err.println( m.group( 1 ));
}

输出:

jumped over
lazy

答案 1 :(得分:0)

String s = "The quick brown fox \"jumped over\" the \"lazy\" dog";
String lastStr = new String();

Pattern pat = Pattern.compile("\".*\"");
Matcher mat = pat.matcher(s);

while (mat.find()) {

 lastStr = mat.group();

}

System.out.println(lastStr.replace("\"", ""));