[英]Regexp to match multiple Strings - Ruby
說我有以下地址數組
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 }
但這失敗了。
您可以單獨檢查單詞。
regexp_checks = [/Filton/i, /Grove/i, /Bristol/i]
array.all? { |a| regexp_checks.all?{|rgx| a =~ rgx} }
您也可以通過這種方式進行檢查。
regexp_checks = [/Filton.*?Grove.*?Bristol/i]
array.all? { |a| regexp_checks.all?{|rgx| a =~ rgx} }
注意:僅當您要保持單詞出現的順序時才使用此選項。 而且,如果順序很重要,並且在兩者之間不允許使用其他字詞,那么您可以使用
regexp_checks = [/Filton\\W+Grove\\W+Bristol/i]
嘗試以下正則表達式
regexp = /Filton Grove,?\\s*Bristol/i
您不需要在正則表達式中使用^
。
如果三個詞必須按特定順序排列,請嘗試以下操作:
regexp = /Filton[,\s]+Grove[,\s]+Bristol/i
對於所有可能的用例
regexp = /Filton[\s,\s]*Grove[\s,\s]*Bristol/i
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.