Regex 如何通过正则表达式?;

Regex 如何通过正则表达式?;,regex,Regex,字符串如下所示: abcd lookatme:{b:{d:'asdf'},c:{f:'asdfasdfasdf'} },nooooooo:{b:{d:'asdf'},c:{} }, 我想在'lookatme'后面找到对应于“{”的“}” 这是一个有趣的替代方法,不只是捕获匹配的结束符 大括号是一个正则表达式,用于匹配整个子字符串: 从开口处,顶部水平支撑 包括内容, 最多(包括)一对闭合撑杆 要匹配这样的子字符串,请使用以下正则表达式 (\{(?:[^{}]*(?R))*[^{}]*\}

字符串如下所示:

abcd lookatme:{b:{d:'asdf'},c:{f:'asdfasdfasdf'} },nooooooo:{b:{d:'asdf'},c:{} },

我想在'lookatme'后面找到对应于“{”的“}”


这是一个有趣的替代方法,不只是捕获匹配的结束符 大括号是一个正则表达式,用于匹配整个子字符串:

  • 从开口处,顶部水平支撑
  • 包括内容,
  • 最多(包括)一对闭合撑杆
要匹配这样的子字符串,请使用以下正则表达式

(\{(?:[^{}]*(?R))*[^{}]*\})
详情:

  • -开始捕获组
  • \{
    -打开大括号(表示自身)
  • (?:
    -内部非捕获组的开始。
    • [^{}]*
      -除两个大括号外的任意字符数
    • (?R)
      -对整个模式的递归调用
  • )*
    -内部非捕获组的结尾。此组可以出现0次或更多次
  • \}
    -右大括号(表示自身)
  • [^{}]*
    -除两个大括号外的任意字符数
  • -捕获组结束
这样,您就可以匹配每一对顶级大括号。 右大括号,与左大括号(您实际需要的)配对 要匹配)是当前匹配的最后一个字符

有关工作示例,请参见:

原文包括:

  • 2个顶级大括号组和2个嵌套组(如源示例中所示)
  • 另一个没有嵌套支撑组的顶级支撑组
  • 还有一个顶级大括号组,其中包含一个嵌套的大括号组

这是一个有趣的替代方法,可以只捕获匹配的结尾 大括号是一个正则表达式,用于匹配整个子字符串:

  • 从开口处,顶部水平支撑
  • 包括内容,
  • 最多(包括)一对闭合撑杆
要匹配这样的子字符串,请使用以下正则表达式

(\{(?:[^{}]*(?R))*[^{}]*\})
详情:

  • -开始捕获组
  • \{
    -打开大括号(表示自身)
  • (?:
    -内部非捕获组的开始。
    • [^{}]*
      -除两个大括号外的任意字符数
    • (?R)
      -对整个模式的递归调用
  • )*
    -内部非捕获组的结尾。此组可以出现0次或更多次
  • \}
    -右大括号(表示自身)
  • [^{}]*
    -除两个大括号外的任意字符数
  • -捕获组结束
这样,您就可以匹配每一对顶级大括号。 右大括号,与左大括号(您实际需要的)配对 要匹配)是当前匹配的最后一个字符

有关工作示例,请参见:

原文包括:

  • 2个顶级大括号组和2个嵌套组(如源示例中所示)
  • 另一个没有嵌套支撑组的顶级支撑组
  • 还有一个顶级大括号组,其中包含一个嵌套的大括号组

谢谢你的回答。我想在javascript中使用它,我应该怎么做才能使它在ecmascript中工作?恐怕正则表达式的javascript风格不支持(?R)(复活模式)。也许你应该用另一种方法,使用你自己的一段JavaScript代码?谢谢你的回答。我想在JavaScript中使用它,我应该怎么做才能使它在ecmascript中工作?恐怕正则表达式的JavaScript风格不支持(?R)(复活模式)。也许你应该用另一种方法,使用你自己的一段JavaScript代码?