【问题标题】:Regex to capture between two words, and then within that result正则表达式捕获两个单词之间,然后在该结果中
【发布时间】:2018-05-10 06:06:49
【问题描述】:

我有以下文字:

"BOONS": ["Debarrier+Rainbow Shift"
},
"CLUTCH_BOONS": [
  "Boost+Wall"
],

正则表达式:

(?<=[A-Z a-z])(\+)(?=[A-Z a-z])/g

使用 That 我能够捕获所有的 +,这很棒,但我只想捕获“CLUTCH_BOONS”中的 + 符号,我已经非常努力地尝试了,但收效甚微。

我也想关闭“BOONS”括号,我设法让左侧正常但无法获得正确的报价

(?<=.*)(\")(?=.*\})

最终结果应该是这样的

"BOONS": ["Debarrier","Rainbow Shift"]
},
"CLUTCH_BOONS": [
  "Boost","Wall"
],

(我试图使用 Atom / regexr 来修复有问题的 json)

【问题讨论】:

  • 如果您只想捕获"CLUTCH_BOONS" 内部的+ 标志,为什么在预期结果中修改此块之外的+s?
  • 我尝试制作两个正则表达式,一个用于修复括号问题,另一个用于创建“,”
  • 但我只想捕获“CLUTCH_BOONS”中的 + 符号,这与您想要的输出不符。
  • 我认为拆分问题可能更容易,更合乎逻辑,底部是我想要的结果
  • 然后你可以用\[(?:(?!\s*},)[\s\S])*\K(\s*},)来关闭括号。现场演示regex101.com/r/y3zqTw/1

标签: regex regex-lookarounds


【解决方案1】:

对于加号,您可以使用这个正则表达式:

"\w+": \[\s*"\w+\K\+

看这里:

https://regex101.com/r/fJSl37/1

第二个:

"(\s*)},

看这里:

https://regex101.com/r/Oy0CiJ/1

【讨论】:

    猜你喜欢
    • 2020-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-13
    相关资源
    最近更新 更多