按空格分隔字符串,忽略转义的空格

多尔

我一直在使用百分比字符串文字来将字符串转换"one two three four\ five"成数组。

%w(one two three four\ five)

返回:

["one", "two", "three", "four five"]

现在,我想动态地执行此操作,因此可以再使用文字。

我可以使用哪种正则表达式模式将上面的字符串转换为数组?

我正在寻找一个正则表达式模式,将其放入将"one two three four\ five"返回的红宝石拆分方法["one", "two", "three", "four five"]

注意:我只想按未转义的空格进行分割,如上。因为将分隔它们的空格转义了,所以将四和五合并为同一字符串。

维克多·史翠比维

如果您的字符串没有转义序列,则可以使用拆分方法

.split(/(?<!\\)\s+/)

在这里,(?<!\\)\s+匹配\s+不带的1+个空格(\

如果您的字符串可能包含转义序列,则最好使用匹配方法,因为它更可靠:

.scan(/(?:[^\\\s]|\\.)+/)

参见Ruby演示

它将匹配1个或多个字符,除了\和空格(带有[^\\\s])和任何转义序列(与\\.,反斜杠+除换行符以外的任何字符)匹配

要摆脱\符号,您将不得不使用gsub后面符号

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章