繁体   English   中英

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

[英]Get a substring from string multiple times

我有一个字符串,我不知道它有多长时间或在其中使用了哪些字符。 我想搜索字符串并获取在“”内找到的任何子字符串。 我尝试使用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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM