2010-11-24 106 views
0

我想从字符串中提取带引号的子字符串。这是一个例子:如何解析另一个字符串中的带引号的字符串?

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

解析后的输出应为:

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

初始解决方案是string.scan /'\w'/这几乎是确定。

尽管如此,它暗示着'...'里面可以有任何种类的字符(包括数字和[email protected]#$%^&*()),但我无法在更复杂的字符串上工作。

任何想法?

我不知道是否有某种方法可以使/'.*'/工作,但使它不那么贪婪?

+0

@ elusive的答案将做到这一点。注意在`*`之后使用`?`?这就是如何使它不会贪婪。 – 2010-11-24 21:46:41

回答

5

懒惰应该解决这个问题:

/'.*?'/ 

另一种可能是使用:

/'[^']*'/ 
+0

很好的答案,谢谢! – gmile 2010-11-24 21:46:08

0

另一种方式来做到这一点是:

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

String.scan被忽视了很多。

+0

你是什么意思_overlooked_? – gmile 2010-11-26 06:38:56