2013-07-30 1 views
4

Je ne suis pas en mesure de résoudre ceci: J'ai un fichier texte avec des entrées comme "user = ABname". Je voudrais rechercher toutes les lignes contenant l'id d'utilisateur ne commençant pas par "AB" ou "ab" et je dois le faire avec une exp régulière en utilisant la fonctionnalité de recherche de Notepad ++. J'ai essayé d'utiliserregex - notepad ++ - recherche une chaîne contenant une chaîne et ne contenant pas une autre chaîne

user = ^[ab] 

mais est en réalité ne fonctionne pas comme prévu.

Je trouverais tout cela:

user = CDname1 
user = cdname2 
user = acname3 
user = xbname4 

mais pas

user = abname1 
user = ABname2 

Répondre

6

Essayez d'utiliser regard négatif avant:

user = (?![aA][bB]).* 

Vous êtes mal comprendre comment fonctionne la classe de caractères. La classe de caractères - [ab] correspond à un seul caractère, parmi tous les présents à l'intérieur [ et ]. Donc, il va correspondre soit a ou b. Je ne vais pas correspondre ab dans la séquence. Fondamentalement
[ab] est le même que a|b.

5

Vous devez utiliser une préanalyse négative, tels que:

^user = (?![Aa][Bb]) 
0

Essayez: ^user = ([aA][^bB].*|[^a].*)

Il cherche user = alors: a suivi de tout ce qui est pas b ou « tout ce qui ne fonctionne pas commencer par un a

0

Vous pouvez utiliser ceci:.

user = (?:[^a]|a(?!b))\S+ 

(ne pas cocher la case case insensible, mais cochez la case regex :)

Questions connexes