簡體   English   中英

正則表達式:僅匹配非嵌套組

[英]Regex: Only match non-nested groups

我有一些文本,以類似的模式:

new{test}anotherone{test{nest}}new1{test1}new2{test2}

我是 Regex 的新手,並嘗試創建一個匹配組的模式,以便對於每個匹配項:組 1:新組 2:測試

我有這個使用([\\S][az#-()->]+)\\{([^?+]*?)\\}使用 JavaScript

但是,我想忽略帶有嵌套的塊,以便從匹配中忽略anotherone{test{nest}} 這是我對Regex101的嘗試

提前致謝!

更新:字符串也可能嵌套在嵌套部分內,例如

new{test}ignore_this{test1{test1}{test2{test2}}new{test}new{test}

這樣它應該只匹配: Group1: new / Group2: test

您可以嘗試使用此正則表達式來匹配每對newtest (輸入中的 3 對):

(?<!{)\b([^{}]+){([^{}]*)}(?![^{}]*})

更新的正則表達式演示

正則表達式詳情:

  • (?<!{) : 確保我們沒有{在之前的位置
  • \\b : 字邊界
  • ([^{}]+) :匹配第 1 組中不是{}的任何字符的 1+
  • { : 匹配一個{
  • ([^{}]*) :匹配第 2 組中不是{}的任何字符的 0+
  • } : 匹配一個}
  • (?![^{}]*}) :否定前瞻斷言我們沒有前面沒有任何{}的結束}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM