繁体   English   中英

花括号之间的正则表达式,但忽略嵌套

[英]Regular expression between curly braces, but ignore nested

我正在寻找一个正则表达式,它可以在大括号之间找到字符串,但忽略嵌套(如果有)。 例如,下一个字符串:

为参与者重置调查 888 ${d14322a2-bc13-4fcb-9da3-{sdfdsf}e2346a7d58ec} ${c45e9bc0-6043-4aa1-8de0-27f8f8aade82}

应该只匹配接下来的两个:

  1. d14322a2-bc13-4fcb-9da3-{sdfdsf}e2346a7d58ec
  2. c45e9bc0-6043-4aa1-8de0-27f8f8aade82

根据答案,我将添加另一个示例:

{@aaa 位置}
{@eee 标题}
{@bbb { http://www.uytuty.org/879/fghdhgfd }hgjdg}
{@gfh fdgdf gd dfgfdg。}

它应该匹配:

  1. @aaa 位置
  2. @eee 标题
  3. @bbb { http://www.uytuty.org/879/fghdhgfd }hgjdg
  4. @gfh fdgdf gd dfgfdg。

这是递归的工作。

如果您的正则表达式支持它,您可以使用:

(?<={)([^{}]++|\{(?1)\})+(?=})

演示和说明

(?!\\{)[\\w\\-\\{\\}]+(?=\\})

让我们分解一下:

  • (?!abc) - 负面展望。 从结果中排除匹配的字符串。
  • (?=abc) - 积极展望。 从结果中排除匹配的字符串。
  • [\\w\\-\\{\\}]+ - 任何字母数字字符(包括下划线)和花括号。

https://regexr.com/4q128 上测试

暂无
暂无

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

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