如何在多个花括号之间提取元素

时间:2017-03-27 09:23:12

标签: java regex

我正在尝试在Java上编写一个Regex来提取双花括号之间的元素

示例:

I am very much new to java...{{envelope|func"{{aa}}{{ds}}|{{abc.xyz}}"}} and i want to know.... more.  

我尝试了这个正则表达式,但它没有返回第一个元素

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

我想提取如下:

  • 信封| FUNC “{{AA}} {{DS}} | {{abc.xyz}}”
  • aa
  • DS
  • abc.xyz

1 个答案:

答案 0 :(得分:1)

将我的评论转换为答案。这假设在{{}}之间我们有所有非空白字符。

这个正则表达式基于前瞻中的前瞻和交替。捕获的群体本身就是前瞻性的一部分。

\{\{(?=((?:(?!\{\{|}})\S)*+|\S*)}})

或者在Java中:

final String regex = "\\{\\{(?=((?:(?!\\{\\{|\\}})\\S)*+|\\S*)\\}})";

RegEx Demo

相关问题