Tengo problemas con Ruby regex.Cómo usar AND en Ruby Regex
¿Cómo se hace AND (&) regex en ruby?
ejemplo:
cat and dog
cat
dog
I just want to match "cat and dog"
Tengo problemas con Ruby regex.Cómo usar AND en Ruby Regex
¿Cómo se hace AND (&) regex en ruby?
ejemplo:
cat and dog
cat
dog
I just want to match "cat and dog"
Puede hacer algo como un Y usando aheads mirada positiva
(?=.*cat)(?=.*dog).*
Ver que here on Rubularenlace Actualizado!
Este positivo lookahead (?=.*cat)
comprueba si hay "cat" en algún lugar dentro de la cadena, entonces lo mismo se hace para "perro" con (?=.*dog)
. Si esas dos aserciones son verdaderas, la cadena completa se empareja con el .*
al final.
La ventaja es que también coincidirá
perro y el gato
y no sólo
gato y perro
sino que también coincida
perros y gatos
si quieres coincidencias exactas, a continuación, utilizar este
(?=.*\bcat\b)(?=.*\bdog\b).*
\b
es un límite de la palabra, es decir, que los partidos entre una palabra y un carácter que no sea la palabra.
Ver que here
y es la acción por defecto en una expresión regular, es decir, el primer partido de este continuación, seguido por eso y así sucesivamente.
para que coincida con gato y perro, usar algo como
cat.*dog
lo que significa, partido de "gato" seguido de cualquier cosa y luego seguido de "perro". Pero, de nuevo, podría haber malentendido su pregunta ...
Depende de lo que quiera.
Puede utilizar comodín
cat.+dog
O
cat.+dog|dog.+cat
O
cat +and +dog
Su pregunta no es muy clara.
Si desea hacer coincidir sólo aquellas cadenas que contienen tanto "gato" y "perro" (tal vez como parte de una palabra), se puede hacer:
/^.*(cat.*dog|dog.*cat).*$/
la expresión regular anterior se emparejar "dogma de concatenación", pero no "concatenación".
Si desea asegurarse de que el "gato" y "perro" aparecen como palabras por sí mismos, hacer:
/^.*(\bcat\b.*\bdog\b|\bdog\b.*\bcat\b).*$/
la expresión regular anterior coincidirá con "gato y el perro", pero no "el dogma de concatenación" o "cat dogma".
Fuente: http://ruby-doc.org/docs/ProgrammingRuby/html/intro.html#S5
No hay and
operador en Regexp
s, simplemente porque no tiene sentido. Será nunca coincidencia: ¿cómo puede un String
ser 'cat'
y'dog'
al mismo tiempo?
'schrodinger.pet.species.to_s' –
Por supuesto, una cadena puede ser tanto un" gato "como un" perro "al mismo tiempo -' "un gato y un perro están en la misma cuerda" '. – jeffdill2