2010-12-08 8 views

Respuesta

166

Se puede hacer uso de cheques lookarounds:

^(?=.*\bjack\b)(?=.*\bjames\b).*$ 

Test it.

Este enfoque tiene la ventaja de que se puede especificar fácilmente varias condiciones.

^(?=.*\bjack\b)(?=.*\bjames\b)(?=.*\bjason\b)(?=.*\bjules\b).*$ 
+3

¿Alguien le importaría explicar con un poco más de detalle cómo funciona este ejemplo? – bjmc

+1

sintaxis 'vim':'^\ (. * \ \) \ @ = \ (. * \ \ @ = \). * $ 'O' \ v^(. * ) @ = (. * ) @ =. * $ ' – mykhal

+0

¿Alguien sabe por qué se rompería esto (al menos en JavaScript) cuando trato de buscar cadenas que comiencen con '#'? '^ (? =. * \ b # friday \ b) (? =. * \ b # tgif \ b). * $' no puede coincidir con 'blah #tgif blah #friday blah' pero'^(? =. * \ bfriday \ b) (? =. * \ btgif \ b). * $ 'funciona bien. – btleffler

46

Probar:

james.*jack 

Si desea dos cosas al mismo tiempo, entonces or ellos:

james.*jack|jack.*james 
+1

La respuesta aceptada funcionó.esto también funcionó perfectamente para mí. Para buscar código en el estudio visual 'encontrar resultados'. –

+0

¡Este funciona para mí y es mucho más conciso y fácil de entender que la respuesta aceptada! –

5

que puede hacer:

\bjack\b.*\bjames\b|\bjames\b.*\bjack\b 
14

Explicación de los comandos que voy a escribir: -

. significa cualquier carácter, dígito puede venir en lugar de.

* significa uno o cero ocurrencia de cosa writtern justo antes.

| significa 'o'.

Así,

james.*jack 

buscaría james, entonces cualquier número de caracteres hasta jack viene.

Desde que desea ya sea jack.*james o james.*jack

Por lo tanto Comando:

jack.*james | james.*jack 
+0

Como nota al margen, también podría haber editado la respuesta @ icyrock (que es la misma como el tuyo, solo 6 años antes), tu explicación es muy útil por sí misma. – WoJ

Cuestiones relacionadas