2017-04-03 113 views
1

我有一个字符串,我不知道它是多长时间或者使用了哪些字符。 我想在字符串中搜索并获取在“”中找到的任何子字符串。 我试图用pattern.compile但它总是返回一个空字符串从字符串中多次获取子字符串

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

我该怎么办呢?

回答

1

使用.+?进去""所有字符分组

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 
+0

非常感谢。 在你的例子中,有一个问题,我如何显示朋友,并输入没有“”。 – Ayhem

+0

@Ayhem最简单的方法就是擦掉引号,比如'.replace(“\”“,”“)' –

0

那是因为你的正则表达式实际上是搜索之间的一个角色“和” ...如果你想寻找更多的角色,你应该重写你的正则表达式为"\".?\""

相关问题