说我有以下地址数组
array = ["1 New Street, Filton Grove, Bristol BD7 0AA", "2 New Street, Filton Grove, Bristol BD7 0AA", "3 New Street, Filton Grove, Bristol BD7 0AA"]
我想检查一下数组中的每个项目是否包含单词Filton Grove Bristol
,但由于地址中有逗号,所以会轻微地抛弃我。
如何忽略逗号并检查每个单词迭代中是否存在每个单词
到目前为止,我有这个
regexp = /^Filton Grove Bristol/i
array.all? { |a| regex =~ a }
但这失败了。
答案 0 :(得分:2)
您可以单独检查单词。
regexp_checks = [/Filton/i, /Grove/i, /Bristol/i]
array.all? { |a| regexp_checks.all?{|rgx| a =~ rgx} }
答案 1 :(得分:2)
你也可以这样检查..
regexp_checks = [/Filton.*?Grove.*?Bristol/i]
array.all? { |a| regexp_checks.all?{|rgx| a =~ rgx} }
注意:仅当您要维护出现的单词顺序时才使用此选项。
如果订单很重要而且之间不允许其他任何词语,你可以使用
regexp_checks = [/Filton\W+Grove\W+Bristol/i]
答案 2 :(得分:2)
尝试以下正则表达式
regexp = /Filton Grove,?\s*Bristol/i
您的正则表达式中不需要^
。
答案 3 :(得分:2)
如果三个单词必须符合特定顺序,请尝试以下操作:
regexp = /Filton[,\s]+Grove[,\s]+Bristol/i
答案 4 :(得分:1)
对于所有可能的用例
regexp = /Filton[\s,\s]*Grove[\s,\s]*Bristol/i