多次从字符串中获取子字符串

时间:2017-04-03 14:51:47

标签: java regex javafx

我有一个字符串,我不知道它有多长或者在其中使用了什么字符。 我想在字符串中搜索并获取#34;"中的任何子字符串。 。 我尝试使用pattern.compile但它总是返回一个空字符串

Pattern p = Pattern.compile("\".\"");
Matcher m = p.matcher(mystring);
while(m.find()){
    System.out.println(m.group().toString());
}

我该怎么做?

2 个答案:

答案 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)

这是因为你的正则表达式实际上在“和”之间搜索一个字符...如果你想搜索更多字符,你应该将你的正则表达式重写为"\".?\""