从字符串中多次获取子字符串
问题描述:
我有一个字符串,我不知道它是多长时间或者使用了哪些字符。 我想在字符串中搜索并获取在“”中找到的任何子字符串。 我试图用pattern.compile但它总是返回一个空字符串从字符串中多次获取子字符串
Pattern p = Pattern.compile("\".\"");
Matcher m = p.matcher(mystring);
while(m.find()){
System.out.println(m.group().toString());
}
我该怎么办呢?
答
使用.+?
进去""
所有字符分组
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
答
那是因为你的正则表达式实际上是搜索之间的一个角色“和” ...如果你想寻找更多的角色,你应该重写你的正则表达式为"\".?\""
非常感谢。 在你的例子中,有一个问题,我如何显示朋友,并输入没有“”。 – Ayhem
@Ayhem最简单的方法就是擦掉引号,比如'.replace(“\”“,”“)' –