2010-12-08 8 views

Répondre

166

Vous pouvez faire des vérifications à l'aide lookarounds:

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

Test it.

Cette approche a l'avantage que vous pouvez facilement spécifier plusieurs conditions.

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

Quelqu'un pourrait-il expliquer un peu plus en détail comment fonctionne cet exemple? – bjmc

+1

Syntaxe 'vim':'^\ (. * \ \) \ @ = \ (. * \ \ @ = \). * $ 'Ou' \ v^(. * ) @ = (. * ) @ =. * $ ' – mykhal

+0

Est-ce que quelqu'un sait pourquoi cela casserait (en JavaScript au moins) quand j'essayerais de chercher des chaînes commençant par '#'? '^ (? =. * \ b # vendredi \ b) (? =. * \ b # tgif \ b). * $' ne correspond pas 'blah #tgif blah #friday blah' mais'^(? =. * \ bfriday \ b) (? =. * \ btgif \ b). * $ 'fonctionne correctement. – btleffler

46

Essayez:

james.*jack 

Si vous voulez les deux en même temps, puis les or:

james.*jack|jack.*james 
+1

La réponse acceptée a fonctionné.Cela a également fonctionné parfaitement pour moi. Pour rechercher du code dans Visual Studio 'trouver des résultats'. –

+0

Celui-ci fonctionne pour moi et est beaucoup plus concis et facile à comprendre que la réponse acceptée! –

5

Vous pouvez faire:

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

Explication de commandement que je vais écrire: -

. signifie un caractère, un chiffre peut venir à la place.

* signifie une ou zéro occurrence de chose écrite juste avant elle.

| signifie 'ou' '.

Ainsi,

james.*jack 

chercherait james, puis un certain nombre de caractère jusqu'à ce que jack vient.

Depuis vous voulez soit jack.*james ou james.*jack

Par conséquent Commande:

jack.*james | james.*jack 
+0

En note - vous pourriez aussi avoir édité la réponse @ icyrock (qui est la même comme le vôtre, seulement 6 ans plus tôt), votre explication est très utile en soi. – WoJ