J'ai besoin de logique AND dans regex.Regex pour correspondre à la chaîne contenant deux noms dans n'importe quel ordre
quelque chose comme
jacket James
d'accord avec les chaînes suivantes
'hi jack ici est James'
« salut James ici est prise '
J'ai besoin de logique AND dans regex.Regex pour correspondre à la chaîne contenant deux noms dans n'importe quel ordre
quelque chose comme
jacket James
d'accord avec les chaînes suivantes
'hi jack ici est James'
« salut James ici est prise '
Vous pouvez faire des vérifications à l'aide lookarounds:
^(?=.*\bjack\b)(?=.*\bjames\b).*$
Cette approche a l'avantage que vous pouvez facilement spécifier plusieurs conditions.
^(?=.*\bjack\b)(?=.*\bjames\b)(?=.*\bjason\b)(?=.*\bjules\b).*$
Quelqu'un pourrait-il expliquer un peu plus en détail comment fonctionne cet exemple? – bjmc
Syntaxe 'vim':'^\ (. * \
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
Essayez:
james.*jack
Si vous voulez les deux en même temps, puis les or
:
james.*jack|jack.*james
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'. –
Celui-ci fonctionne pour moi et est beaucoup plus concis et facile à comprendre que la réponse acceptée! –
Vous pouvez faire:
\bjack\b.*\bjames\b|\bjames\b.*\bjack\b
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
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
double possible: [mulitple mots-en-tout-ordre à l'aide-regex] (http : //stackoverflow.com/questions/1177081/mulitple-words-in-any-order-using-regex) –