2014-09-12 7 views
0

J'ai trois échantillons de chaîne ci-dessous:modèle négation Regex correspondance

day/Mon/done 
day/Tue/done 
day/Wed/done 

Comment puis-je extraire day/Wed/done en utilisant la négation pour les deux autres? Ci-dessous ne fonctionne pas.

/day/[^(Mon|Tue)]/done 
+1

si vous regardez vers le côté droit de cette page pour « connexes », vous verrez probablement cette question: http://stackoverflow.com/questions/406230/regular-expression-to-match-string- pas-contenant-un-mot? rq = 1 – Peter

+0

Pas une question C - suggère de supprimer tag. – chux

+0

Merci @Peter de pointer sur le lien. – adizone

Répondre

1

Il est pas comment niée character classes travail - ils interprètent encore chaque caractère à l'intérieur du [..] comme un seul caractère. Et il n'y a pas de match pour

day/?/done 

? est un seul caractère. Soit utiliser l'une des techniques en Regular expression to match a line that doesn't contain a word? (merci, Peter!), Ou faire un bon usage du fait que le premier caractère de ces jours-ci sont uniques:

day/[^MT]../done 
1

Vous pouvez essayer lookahead.

'day/(?!(Mon|Tue)).*/done' 
+1

L'OP * veut * correspondre à 'Wed' (ou, plus précisément, ni' Mon' ni 'Tue'). – usr2564301

+0

Désolé. J'ai mis à jour ma réponse. – plafratt