【发布时间】:2014-11-22 22:50:21
【问题描述】:
给定一个用正斜杠 ('/') 定义的正则表达式哈希,我想测试一个字符串是否与其中任何一个匹配。
我的匹配应该不区分大小写,但我不想在哈希中的正则表达式末尾显式使用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
但同样,这不能识别字符串的任何部分。
那么我如何从一个不区分大小写 Regexp 创建一个不区分大小写 Regexp?
【问题讨论】:
-
如果将
i添加到模式的末尾可以解决问题,那么您到底想在这里做什么? -
一个通用词法分析器,我可以在其中提出不区分大小写的选项
-
当用户想要使用不区分大小写的词法分析器时,为什么不直接使用
i选项?任何其他解决方案都是在重新发明轮子。