我正在尝试在Java上编写一个Regex
来提取双花括号之间的元素
示例:
I am very much new to java...{{envelope|func"{{aa}}{{ds}}|{{abc.xyz}}"}} and i want to know.... more.
我尝试了这个正则表达式,但它没有返回第一个元素
{\{(.*?)(?:\{\{(.*?)\}\})*\}\}
我想提取如下:
答案 0 :(得分:1)
将我的评论转换为答案。这假设在{{
和}}
之间我们有所有非空白字符。
这个正则表达式基于前瞻中的前瞻和交替。捕获的群体本身就是前瞻性的一部分。
\{\{(?=((?:(?!\{\{|}})\S)*+|\S*)}})
或者在Java中:
final String regex = "\\{\\{(?=((?:(?!\\{\\{|\\}})\\S)*+|\\S*)\\}})";