正则表达式:仅在特定行中匹配和替换空格

时间:2018-10-07 09:10:28

标签: regex visual-studio-code

我肯定在阅读答案时会把头撞在墙上,但我无法弄清楚。

我有一个带有伪数据的JSON来填充数据库。一个属性称为“ 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的查找和替换中使用它,但是也欢迎知道如何在纯JS 中做到这一点!

2 个答案:

答案 0 :(得分:1)

从Visual Studio Code v.1.31.0版本开始,您can use infinite-width lookahead and lookbehind没有任何约束。

您可以使用

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

详细信息

  • (?<=slug: '[^']*)-字符串中的位置,紧跟slug:,空格,'和0+个字符('
  • 之后)
  • \s-一个空格。

查看演示屏幕截图:

enter image description here

答案 1 :(得分:0)

在VSCode中,因为向后看不起作用:

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

您将不得不单击几次“全部替换”按钮,直到垃圾邮件计数降至0,因为它仅与每行中的第一个匹配,因此您必须对其进行垃圾邮件处理。我知道这不理想,但是如果您只做一次...