Javascript 正则表达式匹配空间但转义空间

Javascript 正则表达式匹配空间但转义空间,javascript,regex,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/\uuu-config-GD/ST3 正则表达式匹配空间,但已尝试转义空间: 首先匹配转义空间(或任何) \\. 工作 接下来,要匹配空格,请排除转义的空格(或任意空格) (?!\\) 不起作用 代码有什么问题?javascri

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

正则表达式匹配空间,但已尝试转义空间:

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

\\.

工作

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

(?!\\)

不起作用

代码有什么问题?javascript

谢谢

编辑:

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);
(?
沃克斯

我应该使用负性的负性的lookback

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);
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/_u-config-GD/ST3`;
var regex=新的RegExp('(?)?
EDIT3:

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);
这非常棘手。请参阅我发布的完整工作代码:


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

编辑:我通常不使用javascript,因此我不知道任何快捷方式,因此我认为您可以通过两个步骤来实现这一点:

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

  • 对于第二种情况,您可以使用:

    编辑:我通常不使用javascript,因此我不知道任何快捷方式,因此我认为您可以通过两个步骤来实现这一点:

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

  • 您是否正在尝试匹配所有空格(不包括您所称的“转义空格”)

    您应该能够通过消极回顾来实现这一点:

    (?<!\\)\s
    
    (?
    将匹配前面没有
    \
    的任何空格

    您使用的第二个正则表达式
    (?!\\)\s
    使用了负向前看,并搜索未后跟
    \(任何字符)
    的空格,这就是它不起作用的原因


    编辑:Lookbehinds在javascript中不起作用,学到了一些新的东西。

    您是否尝试匹配所有空格,但不包括您称之为“转义空格”的空格

    您应该能够通过消极回顾来实现这一点:

    (?<!\\)\s
    
    (?
    将匹配前面没有
    \
    的任何空格

    您使用的第二个正则表达式
    (?!\\)\s
    使用了负向前看,并搜索未后跟
    \(任何字符)
    的空格,这就是它不起作用的原因



    编辑:Lookbehinds在javascript中不起作用,学到了一些新东西。

    var str=“rsync-r-t-p-o-g-v--progress--delete-l-H/Users/ken/Library/Application\Support/Sublime\Text\3/Packages/Users/ken/Google\Drive/\uu-config-GD/ST3”
    var n=str(“”);
    将为您提供一个n个数组中的所有部分…我不确定这是否是正则表达式的完美用法…将它们分成若干组可能是,但我看不到您这样做。让我知道。实际上,我使用正则表达式进行.split。我找到了答案,但谢谢。
    var str=“rsync-r-t-p-o-g-v--progress--delete-l-H/Users/ken/Library/Application\Support/Sublime\Text\3/Packages/Users/ken/Google\Drive/u-config-GD/ST3”
    var n=str.split(“”)
    将为您提供一个包含n个部分的数组…我不确定这是否是正则表达式的完美用法…将它们分成若干组可能是,但我没有看到您这样做。让我知道。事实上,我使用正则表达式进行.split。我找到了一个答案,但谢谢。是的,谢谢!我会检查您的答案,因为这是第一个。Christanks,尽管是Sniffer就在我前面:p关于
    foo\\bar
    的内容是什么?如果有奇数的'\\\'而不是偶数,那么否定的lookbehind不需要通过吗?通常正则表达式实现要求lookbehind具有固定的长度,所以我认为这在一般情况下是不可行的。啊,很好的一点-我只是想问一个例子,因为我不太清楚看看你的意思。如果可能的话,我会加上一条评论。事实上,我已经在js的split中尝试了这个正则表达式。它会产生一个错误。请查看我的编辑,并让我知道你的想法。是的,谢谢!我会检查你的答案,因为这是第一个。Christanks,尽管Sniffer比我稍微早一点:PWhat about
    foo\\bar
    ?如果有奇数的'\\'而不是偶数,那么反向查找不需要通过吗?通常正则表达式实现要求lookbehind具有固定的长度,所以我认为这在一般情况下是不可行的。啊,很好的一点-我只是想问一个例子,因为我不太明白您的意思。如果成功,我会+1注释有一件事是可能的。事实上,我已经在js的拆分中尝试了这个正则表达式。它生成了一个错误。请查看我的编辑,并让我知道你的想法。@KenOKABE欢迎,尽管我在Chris之前回答了,请检查时间:)哦,对了,对不起。事实上,我在拆分js时尝试过这个正则表达式。它会产生错误。请参阅我的编辑,并让我知道你的想法。@KenOKABE,那么你想将命令拆分为非转义空格吗?谢谢@Sniffer,但实际上,你提供的代码在js上下文中不起作用。反斜杠转义可能非常棘手。请参阅全文我发布的工作代码:请检查我对问题的编辑。@KenOKABE欢迎,尽管我在Chris之前回答了,检查时间:)哦,对了,对不起。事实上,我在拆分js时尝试了这个正则表达式。它会产生错误。请查看我的编辑,并让我知道您的想法。@KenOKABE所以您想在未转义的空格周围拆分命令吗?