/ / Regexp para que coincida con varias cadenas - Ruby - ruby, arrays, regex

Regexp para que coincida con varias cadenas - Ruby - ruby, arrays, regex

Digamos que tengo la siguiente matriz de direcciones

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"]

Me gustaría verificar que cada elemento de la matriz contenga las palabras Filton Grove Bristol, pero como hay comas dentro de la dirección, me está arrojando un poco.

¿Cómo ignoro las comas y verifico que cada palabra exista en cada iteración de la matriz?

Hasta ahora tengo esto

regexp = /^Filton Grove Bristol/i
array.all? { |a| regex =~ a }

Pero esto falla.

Respuestas

2 para la respuesta № 1

Podrías buscar palabras por separado.

regexp_checks = [/Filton/i, /Grove/i, /Bristol/i]
array.all? { |a| regexp_checks.all?{|rgx| a =~ rgx} }

2 para la respuesta № 2

Si las tres palabras deben estar en la secuencia específica, intente esto:

regexp = /Filton[,s]+Grove[,s]+Bristol/i

2 para la respuesta № 3

También puede verificar de esta manera ...

regexp_checks = [/Filton.*?Grove.*?Bristol/i]
array.all? { |a| regexp_checks.all?{|rgx| a =~ rgx} }

Nota: Use esto solo si desea mantener el orden de las palabras que aparecen. Y si el orden es importante y no se deben permitir otras palabras entre ellas ... puede usar
regexp_checks = [/FiltonW+GroveW+Bristol/i]


2 para la respuesta № 4

Pruebe la siguiente expresión regular

regexp = /Filton Grove,?s*Bristol/i

No necesitas el ^ en tu regex


1 para la respuesta № 5

Para todos los casos de uso posibles

regexp = /Filton[s,s]*Grove[s,s]*Bristol/i