3

我正在尝试在 ruby​​ on rails 应用程序中使用正则表达式来搜索给定的字符串并找到打开和关闭方括号的任何实例(即 [ 和 ])并选择两者之间的内容。

例如:

Lorem ipsum [dolor sit] amet...

在此字符串中,结果将是:[dolor sit]

我玩了一下rubular,发现这或多或少符合我的要求

/\[.*?\]/

所以我的问题是,如何在不选择括号本身的情况下匹配两个方括号内的所有内容?还有我如何将它们实际集成到 ruby​​ 脚本中?

正则表达式对我来说是全新的领域,所以你们可以提供的任何帮助将不胜感激:)

4

3 回答 3

4

收集正则表达式的多个捕获是String#scan的工作

>> s="Lorem ipsum [dolor sit] [amet] ..."
=> "Lorem ipsum [dolor sit] [amet] ..."
>> s.scan(/\[([^\]]*)\]/).flatten
=> ["dolor sit", "amet"]
于 2012-05-02T21:53:45.420 回答
2

您需要使用String#scan

"Hi [there] how are [you]?".scan(/\[.*?\]/)
 => ["[there]", "[you]"] 

此方法迭代整个字符串,返回每个匹配项。

于 2012-05-02T21:58:27.120 回答
1

您可以将与要提取的输入部分相对应的正则表达式部分包装在里面()

str = "Lorem ipsum [dolor sit] amet....".match(/\[(.*?)\]/)
# str --> #<MatchData "[dolor sit]" 1:"dolor sit"> 
str[1] # Will give you 'dolor sit'

注意,也可以通过全局变量访问匹配的结果:($1一般$iwherei表示匹配词的索引)。

于 2012-05-02T21:13:20.510 回答