代码之家  ›  专栏  ›  技术社区  ›  Neithan Max

Regex:仅在特定行中匹配和替换空格

  •  0
  • Neithan Max  · 技术社区  · 6 年前

    我有一个带有假数据的JSON来填充一个db。一个属性称为“slug”,它包含一个字符串,我想将其“slugify”。

    [
      {
        blah: '[...]'
        slug: 'Plem ap at rem',
        bleh: '[...]',
      },
      {
        blah: '[...]'
        slug: 'Etiam vel augue',
        bleh: '[...]',
      },
    ]
    

    应该变成:

    [
      {
        blah: '[...]'
        slug: 'Plem-ap-at-rem',
        bleh: '[...]',
      },
      {
        blah: '[...]'
        slug: 'Etiam-vel-augue',
        bleh: '[...]',
      },
    ]
    

    我想先瞄准价值,然后无望地只捕捉空间:

    slug: '(?:[\w]*([\s])*)+'
    

    我把围观弄得一团糟,但运气不好。

    PS:我打算在VSCode的find&replace中使用它,但是知道如何在 素色JS 也很受欢迎!

    1 回复  |  直到 6 年前
        1
  •  1
  •   Phil B    6 年前

    在VSCode中,由于lookbehind不起作用:

    (slug: '\S*)\s 替换为: $1-

    您将不得不垃圾邮件点击“全部替换”按钮几次,直到匹配计数下降到0,因为它只匹配每行的第一个匹配项。不太理想我知道但如果你只是做一次。。。

        2
  •  1
  •   Wiktor Stribiżew    5 年前

    can use infinite-width lookahead and lookbehind 没有任何以Visual Studio代码v.1.31.0版本开始的约束。

    你可以用

    (?<=slug: '[^']*)\s
    替换为 : -

    细节

    • (?<=slug: '[^']*) -字符串中紧跟其后的位置 slug: ' 除了
    • \s -一个空格。

    查看演示截图:

    enter image description here