我正在尝试解析一个字符串,但我遇到了麻烦:
str = " @Var(\"^This is the text I want to save.\") "
我想要解析的是:^This is the text I want to save.
基本上是引号之间的任何内容。
我试图使用str.split()
...但我不确定要指定什么。
由于
答案 0 :(得分:2)
您可以使用正则表达式。这里:
"
上述正则表达式基本上会查找"
和{{1}}之间的所有内容并返回它们。
答案 1 :(得分:2)
这应该有效 - 假设您不希望有多个引用的部分。 1指定您想要的匹配组。
puts str[/"(.*)"/, 1]
# ^This is the text I want to save.
答案 2 :(得分:0)
如果要获取不同大小的数组,可以分两步执行:.split
和.scan
。在你的情况下,.scan
在()
的两边都有|
,这就是你遇到nil问题的原因(这应该是有用的,但不是你的情况)。因此,您可以使用.flatten.compact
或添加.delete
的第3步。
试试这个:
text.split("\n").map{|i|p i.scan(/'([^']+)'|(\w+)/).flatten.compact}
text.split("\n").map{|i|p i.scan(/'[^']+'|\w+/).map{|i|i.delete "'"}}