簡體   English   中英

正則表達式以匹配多個字符串-Ruby

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM