如何在另一个字符串中解析带引号的字符串?

时间:2010-11-24 20:56:23

标签: ruby regex string parsing

我想从字符串中提取引用的子字符串。这是一个例子:

string = 'aaaa' + string_var_x + 'bbbb' + string_var_y

解析后的输出应为:

["'aaaa'", "'bbbb'"]

最初的解决方案是string.scan /'\w'/,这几乎没问题。

仍然我不能让它处理更复杂的字符串,因为它暗示在'...'内可以有任何类型的字符(包括数字和!@#$%^&*()无论如何)。

有什么想法吗?

我想知道是否有某种方法可以使/'.*'/正常工作,但不要贪婪吗?

2 个答案:

答案 0 :(得分:5)

懒惰应该解决这个问题:

/'.*?'/

另一种可能性是使用它:

/'[^']*'/

答案 1 :(得分:0)

另一种方法是:

>> %{string = 'aaaa' + string_var_x + 'bbbb' + string_var_y}.scan(/'[^'].+?'/)  
#=> ["'aaaa'", "'bbbb'"]

String.scan被忽视了很多。