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 aboutfoo\\bar
?如果有奇数的'\\'而不是偶数,那么反向查找不需要通过吗?通常正则表达式实现要求lookbehind具有固定的长度,所以我认为这在一般情况下是不可行的。啊,很好的一点-我只是想问一个例子,因为我不太明白您的意思。如果成功,我会+1注释有一件事是可能的。事实上,我已经在js的拆分中尝试了这个正则表达式。它生成了一个错误。请查看我的编辑,并让我知道你的想法。@KenOKABE欢迎,尽管我在Chris之前回答了,请检查时间:)哦,对了,对不起。事实上,我在拆分js时尝试过这个正则表达式。它会产生错误。请参阅我的编辑,并让我知道你的想法。@KenOKABE,那么你想将命令拆分为非转义空格吗?谢谢@Sniffer,但实际上,你提供的代码在js上下文中不起作用。反斜杠转义可能非常棘手。请参阅全文我发布的工作代码:请检查我对问题的编辑。@KenOKABE欢迎,尽管我在Chris之前回答了,检查时间:)哦,对了,对不起。事实上,我在拆分js时尝试了这个正则表达式。它会产生错误。请查看我的编辑,并让我知道您的想法。@KenOKABE所以您想在未转义的空格周围拆分命令吗?