【问题标题】:Regex to capture {}用于捕获 {} 的正则表达式
【发布时间】:2012-03-20 04:11:13
【问题描述】:

您好,我需要创建一个匹配以下模式的正则表达式:

{ 任何字符 } 在字符串中。可能的字符串示例:

示例 1:

{123} abc {456} def {789}hg 应该返回 3 个匹配项:

{123}、{456} 和 {789}

示例 2:

abcd{{{r} 345 } {mmm}

应该返回 2 个数学运算 {r} 和 {mmm}

所以基本上表达式应该匹配 { 任何不是 {} 的字符任意次数,然后是结束 }

到目前为止,我已经想出了这个,但它不起作用:

{*[^{]}

非常感谢提前

【问题讨论】:

  • 您需要使用 \"\{123\}" 转义 { 和 }
  • 因为你的第二个例子暗示了嵌套和潜在不平衡大括号的可能性:即{1{2{3}2}?正则表达式不好——使用解析器。

标签: regex


【解决方案1】:

这是你需要的:

{[^{}]*}

【讨论】:

  • 大括号应该被转义。像这样:\{[^{}]*\}
【解决方案2】:

就像 ILovePaperTowels 所说的那样——如果大括号被您使用的特定正则表达式语法视为特殊,则需要转义大括号。

关于如何转义大括号以及如何正确计算嵌套括号(以任何您希望它们被计算的方式)的确切答案取决于正则表达式的风格。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-02
    • 1970-01-01
    • 1970-01-01
    • 2017-08-02
    • 1970-01-01
    • 2022-01-12
    • 2018-03-11
    相关资源
    最近更新 更多