我有一个字符串,我不知道它有多长或者在其中使用了什么字符。 我想在字符串中搜索并获取#34;"中的任何子字符串。 。 我尝试使用pattern.compile但它总是返回一个空字符串
Pattern p = Pattern.compile("\".\"");
Matcher m = p.matcher(mystring);
while(m.find()){
System.out.println(m.group().toString());
}
我该怎么做?
答案 0 :(得分:2)
使用.+?
获取""
内的所有字符并进行分组
Pattern p = Pattern.compile("\".+?\"");
.+
指定您希望报价单中至少包含一个或多个字符。 ?
指定它是一个不情愿的量词,这意味着它会将不同的引用放入不同的组中。
单元测试示例:
@Test
public void test() {
String test = "speak \"friend\" and \"enter\"";
Pattern p = Pattern.compile("\".+?\"");
Matcher m = p.matcher(test);
while(m.find()){
System.out.println(m.group().toString().replace("\"", ""));
}
}
输出:
friend
enter
答案 1 :(得分:0)
这是因为你的正则表达式实际上在“和”之间搜索一个字符...如果你想搜索更多字符,你应该将你的正则表达式重写为"\".?\""