给定用正斜杠('/'
)定义的正则表达式的散列,我想测试一个字符串是否与它们中的任何一个匹配。如何从非大小写不敏感的Regexp创建不区分大小写的Regexp?
我的匹配应该不区分大小写,但我不想在我的哈希表中的正则表达式的末尾明确地使用i
flag。
str="ENTITY foo is END"
kw={
ent: /entity/,
end: /end/
}
kw.each do |kw_id,rex|
p rex.match(str)
end
因为rex
不发不区分大小写(当然只是增加一个'i'
在我的正则表达式会做的伎俩结束,但是这不是我想要的),就会失败。
所以我修改了这样的代码,以组成一个新的正则表达式:
kw.each do |kw_id,rex|
rexi=Regexp.new(rex.to_s,true)
p rexi.match(str)
end
但同样,这不能识别字符串的任何部分。
那么,如何从不区分大小写的正则表达式创建区分大小写正则表达式?
如果在模式的末尾添加'i'确实有效,那么你究竟在做什么? – hwnd 2014-11-22 22:56:50
一个通用的词法分析器,我可以提出一个不区分大小写的选项 – JCLL 2014-11-22 23:16:20
当用户想要使用词法分析器而不区分大小写时,为什么不使用'i'选项?任何其他解决方案都在重塑车轮。 – 2014-11-23 04:50:48