Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1158 connectés 

  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  [REGEX] co*at will match "coat" OR "cat" <-- ah bon ??

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[REGEX] co*at will match "coat" OR "cat" <-- ah bon ??

n°1361338
doublebeur​re
Posté le 23-07-2014 à 17:22:41  profilanswer
 

Bonjour,
 
en vérifiant la théorie dans plusieurs manuels, je suis tombé sur cette définition du wildcard:
 

Citation :

*   :    Match any number (or none) of the single character that immediately precedes it.
 
Classic Shell Scripting, O'Reilly


 
J'avoue que le "or none" m'a paru baroque.
 
En regardant ailleurs:
 

Citation :

The regex * means "zero or more occurrences." The star is a suffix operator meaning it follows the expression. Another way of looking at this is that the star means the preceding expression is OPTIONAL.
 
  Subject contains reg. expr. "co*at"
Will match "coat" OR "cat."
 
http://gravity.tbates.org/reg-101.html


 
 
 
Du coup je me suis jeté sur mon terminal pour voir si j'avais halluciné ou pas depuis des années que j'utilise '*' dans mes expressions, et non, co*t ne matche pas 'cat'.
 

Code :
  1. % ls
  2. cat  coat
  3. % ls co*t
  4. coat
  5. % ls | grep co*t
  6. coat


 
Quelqu'un peut tirer ca au clair ??  [:er1c:1]  

mood
Publicité
Posté le 23-07-2014 à 17:22:41  profilanswer
 

n°1361350
kazord44
Posté le 23-07-2014 à 20:30:08  profilanswer
 

ligne 4, tu as pas le a de co*at, alors qu'il est présent dans les exemples
 
aussi, grep, le shell et autres, n'utilise pas les regex par défaut
(option -r dans les commandes en général)

Message cité 1 fois
Message édité par kazord44 le 23-07-2014 à 20:32:21
n°1361366
Profil sup​primé
Posté le 24-07-2014 à 00:18:44  answer
 

bien sûr que si, grep utilise les regex, c'est ça raison d'être !

 

par contre, le shell, lui, n'utilise pas du tout les regex (à moins de le spécifier expressément dans des tests entre [[ avec l'opérateur =~), mais des caractères génériques (glob).

 
Citation :

option -r dans les commandes en général

r comme ringard ? ou ignare !
quand on sait pas...

Message cité 2 fois
Message édité par Profil supprimé le 25-07-2014 à 05:26:10
n°1361370
o'gure
Modérateur
Multi grognon de B_L
Posté le 24-07-2014 à 07:32:56  profilanswer
 


Tu  cherches une sanction ?


---------------
Relax. Take a deep breath !
n°1361371
o'gure
Modérateur
Multi grognon de B_L
Posté le 24-07-2014 à 07:34:48  profilanswer
 

kazord44 a écrit :

(option -r dans les commandes en général)


-r c'est plutôt pour indiquer que la commande doit chercher récursivement dans les répertoires.


---------------
Relax. Take a deep breath !
n°1361374
o'gure
Modérateur
Multi grognon de B_L
Posté le 24-07-2014 à 07:37:44  profilanswer
 

Par rapport à grep, il suffit de lire le manpage
en particulier la section

Citation :


   Matcher Selection
       -E, --extended-regexp
              Interpret PATTERN as an extended regular expression (ERE, see below).  (-E is specified by POSIX.)

 

      -F, --fixed-strings
              Interpret  PATTERN  as  a  list of fixed strings, separated by newlines, any of which is to be matched.  (-F is
              specified by POSIX.)

 

      -G, --basic-regexp
              Interpret PATTERN as a basic regular expression (BRE, see below).  This is the default.

 

      -P, --perl-regexp
              Interpret PATTERN as a Perl regular expression (PCRE, see below).  This is highly experimental and grep -P  may
              warn of unimplemented features.


Message édité par o'gure le 24-07-2014 à 07:42:19

---------------
Relax. Take a deep breath !
n°1361386
doublebeur​re
Posté le 24-07-2014 à 10:50:38  profilanswer
 

Okok, j'a beau mettre toutes les differentes options de regex, dans aucun cas mon grep n'interprete le '*' comme les manuels que j'ai cités plus haut le disent.
 

Citation :

% ls
cat  coat
 
% ls | grep -G co*at
coat
 
% ls | grep -E co*at
coat
 
% ls | grep co*at    
coat

n°1361398
zipe31
Posté le 24-07-2014 à 13:31:14  profilanswer
 

Salut,
 

doublebeurre a écrit :

Bonjour,
 
Du coup je me suis jeté sur mon terminal pour voir si j'avais halluciné ou pas depuis des années que j'utilise '*' dans mes expressions, et non, co*t ne matche pas 'cat'.
 
Quelqu'un peut tirer ca au clair ??


 
Mais comme ça, si :

$ ls c*at
cat  coat
 
$ ls | grep 'c*at'
cat
coat


 
 ;)  
 
 
 
IgnarE avec un E… quand on sait pas...  :non:  
 
 


---------------
$ man woman
n°1361399
odon4
Posté le 24-07-2014 à 13:32:41  profilanswer
 

ls | grep -E 'co*at'


---------------
ventes - mon feed
n°1361403
doublebeur​re
Posté le 24-07-2014 à 16:01:37  profilanswer
 

odon4 a écrit :

ls | grep -E 'co*at'


 
 
Oui voila :jap: , en fait, que ce soit Extended ou Basic regex, ca marche selon la definition, c'est donc les regex du shell qui ne sont pas les regex "standard" decrites dans les bouquins.

mood
Publicité
Posté le 24-07-2014 à 16:01:37  profilanswer
 

n°1361427
Profil sup​primé
Posté le 25-07-2014 à 05:28:44  answer
 

ignare avec un e, c'est corrigé. merci.

 

ça vous fait pas bondir les gars qui envoient les autres dans le mur ?

 
Citation :

c'est donc les regex du shell qui ne sont pas les regex "standard" decrites dans les bouquins.

je me répète : le shell n'utilise pas les regex, mais des caractères génériques.

Message cité 1 fois
Message édité par Profil supprimé le 25-07-2014 à 05:30:48
n°1361430
o'gure
Modérateur
Multi grognon de B_L
Posté le 25-07-2014 à 07:23:13  profilanswer
 


T'es lourd. Si tu cherches à tomber sur tous les gens qui font des erreurs dans leur réponse de cette manière, ta place n'est pas ici.
C'est clairement mon dernier avertissement. Compris ?


Message édité par o'gure le 25-07-2014 à 07:24:52

---------------
Relax. Take a deep breath !
n°1361468
Profil sup​primé
Posté le 25-07-2014 à 18:22:20  answer
 

quand on se trompe, on revient faire amende honorable, et corriger ses dires erronés, on ne va pas pleurer sa mère à la modération.

n°1361470
o'gure
Modérateur
Multi grognon de B_L
Posté le 25-07-2014 à 19:40:42  profilanswer
 


Tu peux me dire quel est ton problème ? un moderateur n aurait pas le droit de consulter et participer aux topics sans alerte comme tout forumeur ?!

 

Ici, on est cordial et on n'insulte pas !
Maintenant si tu ne peux changer ton comportement je t invite à aller voir ailleurs !


Message édité par o'gure le 25-07-2014 à 19:55:41

---------------
Relax. Take a deep breath !

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  [REGEX] co*at will match "coat" OR "cat" <-- ah bon ??

 

Sujets relatifs
regex[Résolu] script sieve, regex et "crochets carrés"
RewriteRule et Regexiptables match u32
Iptables: command owner match plus supporte par le 2.6.14Système raid 1+0 sous Mandrake 8.0 ??? ( I will RAID 100 )
Plus de sujets relatifs à : [REGEX] co*at will match "coat" OR "cat" <-- ah bon ??


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR