2011-06-22 15 views

Respuesta

13

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

0

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 ...

0

Depende de lo que quiera.

Puede utilizar comodín

cat.+dog 

O

cat.+dog|dog.+cat 

O

cat +and +dog 
2

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

0

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?

+1

'schrodinger.pet.species.to_s' –

+0

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