ruby – 尝试将字符串拆分为单个单词或“引用的单词”,并希望在结果数组中保留引号

我正在尝试将类似于“测试驱动开发”的演示文稿的字符串拆分为如下数组:
[ 'Presentation','about','"Behavior Driven Development"' ]

我试过了CSV :: parse_line(string,col_sep:”),但结果却是这样

[ 'Presentation','Behavior Driven Development' ] # I'm missing the quotes here

我也试过一些正则表达式的魔法,但我还是初学者并没有成功.我想对于专业人士来说这很简单,所以也许有人可以指出我正确的方向?谢谢.

解决方法

您可以使用以下正则表达式 split
str = 'Presentation about "Test Driven Development"'
p str.split(/\s(?=(?:[^"]|"[^"]*")*$)/)
# => ["Presentation","about","\"Test Driven Development\""]

如果有空格,它会分裂,但只有在结尾之后的文本包含偶数“.请注意,只有在所有字符串都被正确引用时,此版本才会起作用.

另一种解决方案使用scan读取字符串的部分(除了空格):

p str.scan(/(?:\w|"[^"]*")+/)
# => ["Presentation","\"Test Driven Development\""]

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...