【发布时间】:2013-08-28 03:36:55
【问题描述】:
我有一个正则表达式数组和一个字符串数组。数组的大小可以任意长(例如,100 或 1000)。没有字符串匹配两个不同的正则表达式。我不确定我将如何执行它,但让我们假设它就在那里。正则表达式以pre 开头,后跟一个可选的冒号,后跟一个或多个空格,然后是一个特定的字符串,然后是一个空格,然后是一个整数。它将不区分大小写。
regexes = [/pre: my_string (\d+)/i, /pre: another (\d+)/i]
strings = ["comet", "eclipse", "sunshine", "starlight", "moonlight"]
对于每个字符串,我想检查它匹配哪个正则表达式并返回相应的匹配项。 上面的示例代码演示了我当前的方法。
strings.each {|string|
regexes.each {|regex|
if regex.match(string)
p regex.match(string)
break
end
}
}
似乎效率低下。有什么更有效的方法来实现这一点?
【问题讨论】:
-
正则表达式遵循任何类型的模式还是完全通用?
-
是的,我目前的设计中有一个特定的模式。我已经包含了它的描述。
-
你关心哪个特定的正则表达式匹配吗?
-
没有。只需返回第一场比赛并继续前进。