【问题标题】:What regex to use to replace some strings with line breaks between two substrings?用什么正则表达式在两个子字符串之间用换行符替换一些字符串?
【发布时间】:2018-09-10 18:38:41
【问题描述】:

用什么正则表达式替换两个字符串之间的文本(但文本也有换行符)?基本上,我怎么能替换所有出现的这个:

            "points": [
              {
                "id": 1,
                "x": 15500,
                "y": 3900,
                "state": 1
              }
            ]

用这个:

            "points": []

【问题讨论】:

  • \[[\s\S]*\] 到 $1 imgur.com/a/pPu3dUZ
  • 您为什么要尝试使用正则表达式修改 json?
  • 使用 JSON 解析器。

标签: regex


【解决方案1】:

/"points": \[([^\]]*)\]/gm 将捕获第 1 组中points 的内容,但这很容易中断,除非您的所有输入都与您的示例完全相同。例如,任何内部带有数组的东西都会使事情复杂化:

"points": [
  {
    "id": 1,
    "x": 15500,
    "y": 3900,
    "states": [1,2,3]
   }
 ]

由于这是 JSON,我强烈建议使用 JSON 库来操作此数据,而不是尝试使用正则表达式将其作为纯文本处理。 JSON,很像 XML 和 HTML,不是一种正则语言,因此不能在一般意义上成功地使用正则表达式来操作它(即使它可能适用于像这样的非常特殊的情况)。

JSON 是适合这项工作的工具。 https://weblogs.asp.net/alex_papadimoulis/408925

【讨论】:

    【解决方案2】:

    \[[\s\S]*\]

    $1

    [\s\S] 找到空格并且没有空格字符。一些正则表达式引擎不适用于.*,因此您可以使用[\s\S] 作为. 的解决方法

    screenshotregex101

    【讨论】:

      猜你喜欢
      • 2015-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多