Java - 正则表达式解析x匹配的出现

标签 java regex string parsing

我想解析这个字符串:

{HHH { AAAA } fS } SFS}

按括号编号获取输出。如果我想首先得到输出应该是:

HHH { AAAA 

第二次时:

HHH { AAAA } fS 

等等

我尝试了这个正则表达式,但它没有给我预期的结果:

\{(.*?)\}{1}

最佳答案

您可以通过逆向模式解决您的问题:

public String getResult(String text) {

    Pattern pattern = Pattern.compile("(\\{.*)\\}");
    Matcher matcher = pattern.matcher(text);
    if (matcher.find()) {
        return matcher.group(1);
    } else {
        return null;
    }
}

public static void main(String args[]) {
    Mcve mcve = new Mcve();
    String text = "{HHH { AAAA } fS } SFS}";

    while ((text = mcve.getResult(text)) != null) {
        System.out.println(text);
    }
}

输出

{HHH { AAAA } fS } SFS
{HHH { AAAA } fS 
{HHH { AAAA 
<小时/>

这个想法是获取第一个结果,然后将此结果发送到相同的方法,直到该方法返回 null 例如:

  • 发送此字符串{HHH { AAAA } fS } SFS}接收{HHH { AAAA } fS } SFS
  • 发送上一次迭代的结果{HHH { AAAA } fS } SFS接收{HHH { AAAA } fS
  • 发送上一次迭代的结果{HHH { AAAA } fS接收{HHH { AAAA
  • 发送上一次迭代的结果{HHH { AAAA立即接收null停止

关于Java - 正则表达式解析x匹配的出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49347935/

相关文章:

java - 如何通过BufferedReader加载String?

c++ - 如何将 std::string 转换为 v8 的 Local<string>

java - 将 TableLayout 放入 ScrollView 中?

regex - 如何在 Perl 中用不同的随机值多次替换同一个字符串?

java - 带有 map 的 fragment : cast issue

Javascript RegExp 替换以获取时间

java 表达式匹配

java - 替换字符(") with (\")

java - 如何动态改变Spring JdbcTemplate数据源?

java - onContextItemSelected 到对话框