在正则表达式数组中搜索文本块的最有效方法是什么?
|
我正在寻找一种最有效的方法来搜索文本块(±1 / 2KB)中存储在数组中的许多正则表达式。
示例代码:
patterns = [/patternA/i,/patternB/i,/patternC/m,...,/patternN/i]
content = \"Lorem ipsum dolor sit amet, consectetur... officiam id est laborum.\"
r = patterns.collect{ |pattern|
pattern unless ( content =~ pattern ).blank?
}.compact
其中,r现在包含与内容字符串匹配的模式。
没有找到相关结果
已邀请:
4 个回复
盛虱
,
,
,则创建一个格式为ѭ4a的正则表达式 抱歉,我不了解Ruby,但希望您可以将其转换为代码(: 旁注:这是我上次处理Mercurial \ .hgignore文件的方式。在那种情况下,在一个大的正则表达式上抛出1000个文件名,这比在数百个较小的正则表达式中分别抛出那些文件名更有效。
诫商
由于字符串很大,因此最好在
上实现此方法,而不是在其他方法上实现,因为传递大参数似乎很慢。
并像这样使用它:
解决方案2 它有一个限制,即每个正则表达式均不包含命名/编号捕获。
如果ѭ10内的正则表达式包含命名/编号捕获,则以下部分会出现问题。如果有一种方法可以为每个正则表达式知道多少个潜在捕获,那么它将解决问题。
加成 鉴于:
你可以这样做:
为了避免像
这样的输出,您可能需要在其中放入
。
誓猎贰
这样可以按照在文本中找到单词的顺序返回匹配的模式。 也可能有一种使用命名捕获的方法。
届甸衬丝蚕