正则表达式匹配空间但逃脱空间

时间:2013-08-06 22:47:04

标签: javascript regex

给出一个字符串: rsync -r -t -p -o -g -v --progress --delete -l -H /Users/ken/Library/Application\ Support/Sublime\ Text\ 3/Packages /Users/ken/Google\ Drive/__config-GD/ST3

正则表达式匹配空间但逃脱了空间我尝试过:

首先匹配转义空格(或任何)。

\\.

http://regex101.com/r/uL0mP8 的工作原理。

接下来,要匹配空格,请排除转义空格(或任何)。

(?!\\.)

http://regex101.com/r/fK3sW9 不起作用。

代码有什么问题?的JavaScript。

由于

修改

(?<!\\) http://regex101.com/r/fZ5uP2吵闹!

我应该使用否定的负面反对 ......

EDIT2:

var command0 = `rsync -r -t -p -o -g -v --progress --delete -l -H /Users/ken/Library/Application\ Support/Sublime\ Text\ 3/Packages /Users/ken/Google\ Drive/__config-GD/ST3`;

var regex = new RegExp('(?<!\\)\s')
var commandA = command0.split(regex);

错误 - Invalid regular expression: /(?<!\\)\s/: Invalid group

oops,JavaScript中的解决方法是什么?

JavaScript不支持OK lookbehinds。我不知道怎么做 http://regex101.com 可以输出。也许是服务器端的PHP或其他人。

EDIT3:

这非常棘手。查看我发布的完整工作代码:

shell command to child_process.spawn(command, [args], [options]) node.js

2 个答案:

答案 0 :(得分:0)

对于第二种情况,您可以使用:(?<!\\)

编辑:我通常不使用javascript,所以我不知道任何快捷方式,所以我认为你可以分两步完成:

  1. 使用此正则表达式执行替换(替换)\\\s,替换为分号;,如下所示:var newCommand = command0.replace(/\\\s/g, ";");
  2. 然后使用此正则表达式执行拆分:\s,如下所示:var result = newCommand.split(/\s/);

答案 1 :(得分:0)

您是否尝试匹配所有空格,不包括您所谓的“转义空间”。

你应该能够以负面的观察力实现这一目标:

(?<!\\)\s

将匹配\之前没有的任何空格。

你使用(?!\\.)\s的第二个正则表达式是使用否定前瞻,并搜索没有\(any character)后面的空格,这就是为什么它不起作用。

编辑:Lookbehinds无法在javascript中运行,学到了新的东西。