Deux questions à propos des expressions régulières

French support forum

Moderators: white, nsp, Stefan2

Post Reply
cortazar
Junior Member
Junior Member
Posts: 7
Joined: 2004-05-31, 09:41 UTC

Deux questions à propos des expressions régulières

Post by *cortazar »

Bonjour,

1-Que ça soit en lors d'une "Recherche de fichiers" ou une "QuickSearch" l'expression régulière suivante
"[abc]" (->Single character (a or b or c))
fonctionne correctement, mais celle-ci :
"[^abc]" (->Single character (not a or b or c))
ne fonctionne pas.
Est-ce normal ?

2-En mode "QuickSearch" l'expression "^[ES]" ne fonctionne pas, alors qu'elle fonctionne en mode "Recheche de fichiers".
Est-ce un bug ?
Par contre, "^E" ou "^S" fonctionnent...

Merci,
Stéphane
User avatar
ghisler(Author)
Site Admin
Site Admin
Posts: 48077
Joined: 2003-02-04, 09:46 UTC
Location: Switzerland
Contact:

Post by *ghisler(Author) »

Quick search ne supporte pas les expressions régulières. Ou utilisez-vous "quick search extended"? Cela ne fait pas partie de Total Commander et utilise sa propre fonction de recherche.
Author of Total Commander
https://www.ghisler.com
cortazar
Junior Member
Junior Member
Posts: 7
Joined: 2004-05-31, 09:41 UTC

Post by *cortazar »

Bonsoir,
Désolé pour ce post tardif, la rentrée a été difficile !

En effet, j'utilise Quick search extended". Donc OK pour dire que cette extension ne faisant pas partie de TC est hors sujet ici.

Par contre, ma première question à propos du fait que l'expression régulière [^abc] n'est pas interprétée comme "Single character (not a or b or c) " concerne aussi la recherche de fichiers dans TC lorsque je coche la case "ExpRég.".
Donc est-ce normal que le caractère ^ ne soit pas interprété correctement ?

Merci,
Stéphane
User avatar
ghisler(Author)
Site Admin
Site Admin
Posts: 48077
Joined: 2003-02-04, 09:46 UTC
Location: Switzerland
Contact:

Post by *ghisler(Author) »

Oui, c'est normal. [^abc] trouve un caractère qui n'est pas a, b ou c. Il ne dit rien à propos du reste du nom.

Eassayez:
^[^abc]$

^ au début veut dire "commence avec le début de la ligne", et $ à la fin de la ligne.
Author of Total Commander
https://www.ghisler.com
User avatar
nsp
Power Member
Power Member
Posts: 1804
Joined: 2005-12-04, 08:39 UTC
Location: Lyon (FRANCE)
Contact:

Post by *nsp »

cortazar wrote:Bonsoir,
Désolé pour ce post tardif, la rentrée a été difficile !

En effet, j'utilise Quick search extended". Donc OK pour dire que cette extension ne faisant pas partie de TC est hors sujet ici.

Par contre, ma première question à propos du fait que l'expression régulière [^abc] n'est pas interprétée comme "Single character (not a or b or c) " concerne aussi la recherche de fichiers dans TC lorsque je coche la case "ExpRég.".
Donc est-ce normal que le caractère ^ ne soit pas interprété correctement ?

Merci,
Stéphane
Peut-être un peu tard....
Il existe deux type d’évaluation des expressions régulières :
  • - Recherche : toute chaine contenant l'expression est validée. C'est le cas dans la recherche de fichier et aussi dans "QuickSearch Extended"
    - Validation : toute chaine correspondant exactement à l'expression est validée. Dans TC, il est possible de simuler ce mode si on encadre l'expression par ^ et $ (début et fin de chaine)
Comme TC utilise le mode recherche, avec [^abc] tout fichier dont le nom contient au moins une lettre différente de a ou b ou c est validé !

^[^abc]$ force l’évaluation du nom de fichier dans son ensemble et dans ce cas votre interprétation de l'expression est la bonne !
stéphane
Junior Member
Junior Member
Posts: 3
Joined: 2014-06-21, 16:22 UTC

Post by *stéphane »

Bonjour,

Merci beaucoup mais soit je m'exprime très mal, soit je ne comprends pas vos réponses. :)
Je vais donc prendre des exemples...

Voici le contenu du répertoire c:\temp\RegExpr\ :
AN001
BO002
DN003
EO004
JW006
KX007
MZ005
Dans la boîte de dialogue "Recherche de fichiers" ouverte suite à Alt+F7, si je mets dans le champ "Rechercher:" :

[AN]
-> dans la fenêtre "Résultats:", j'obtiens
AN001
DN003
-> ça me va

[1-6]
-> dans la fenêtre "Résultats:", j'obtiens
AN001
BO002
DN003
EO004
JW006
MZ005
-> ça me va

^[ABX]
-> dans la fenêtre "Résultats:", j'obtiens
AN001
BO002
-> ça me va

[2-7]$
-> dans la fenêtre "Résultats:", j'obtiens
BO002
DN003
EO004
JW006
KX007
MZ005
-> ça me va

^[AB12]$
-> dans la fenêtre "Résultats:", j'obtiens
[Aucun fichier trouvé]
-> là je ne comprends pas selon moi l'expression correspond à tous les fichiers commençants par A ou B ou finissant par 1 ou 2. Donc je devrais avoir :
AN001
BO002
^[^AB12]$
-> dans la fenêtre "Résultats:", j'obtiens
[Aucun fichier trouvé]
-> je ne comprends pas non plus car d'après ce que j'ai compris de vos explications l'expression correspond à tous les fichiers ne contenant ni A, ni B, ni 1, ni 2. Donc je devrais avoir :
DN003
EO004
JW006
KX007
MZ005
Pouvez-vous m'expliquer où est-ce que mon raisonnement est faux ?

Merci,
Stéphane
User avatar
nsp
Power Member
Power Member
Posts: 1804
Joined: 2005-12-04, 08:39 UTC
Location: Lyon (FRANCE)
Contact:

Post by *nsp »

stéphane wrote:Bonjour,

Merci beaucoup mais soit je m'exprime très mal, soit je ne comprends pas vos réponses. :)
Je vais donc prendre des exemples...

----------8< --------

Code: Select all

^[^AB12]$
----------8< --------
Pouvez-vous m'expliquer où est-ce que mon raisonnement est faux ?

Merci,
Stéphane
L'expression correspond a :
^ debut du nom de fichier
[^AB12] un seul caractère étant ni A ni B ni 1 ni 2
$ fin de fichier

Pour avoir ce que vous désirez:
tous les fichiers ne contenant ni A, ni B, ni 1, ni 2.
il faut utiliser l'expression:

Code: Select all

^[^AB12]*$
ici * permet de répéter de 0 à xxx fois le caractère.
tout fichier ne commençant ni par A ni par B OU se terminant ni par 1 ni par 2
il faut utiliser l'expression:

Code: Select all

^[^AB]|[^12]$
| est l'operateur ou
tout fichier ne commençant ni par A ni par B ET se terminant ni par 1 ni par 2
il faut utiliser l'expression:

Code: Select all

^([^AB12]|[^AB].*[^12])$
ici .* correspond a toute séquence de caractère. [^AB12] traite le cas des fichiers dont le nom ne comporte qu'un seul caractère. Les parenthèses permettent d'isoler ^ et $

Regardez un tutoriel/livre sur les expression régulières et testez avec un éditeur comme editpad Lite, notepad++, pspad .... ou en ligne avec https://regex101.com/ ou autre.....

-----Édité pour ajouter quelques précisions ----
stéphane
Junior Member
Junior Member
Posts: 3
Joined: 2014-06-21, 16:22 UTC

Post by *stéphane »

Bonjour et merci beaucoup !
J'ai enfin tout compris :)

Bonne journée,
Stéphane
Post Reply