expresison reguliere

expresison reguliere - Shell/Batch - Programmation

Marsh Posté le 07-02-2005 à 20:53:34    

salut qqes quesiton
 
quand je fais:
1/
ls|grep '^[A-Z]*'
jobtient tous les fichiers,comment ca se fait,theoriquement letoile sert a a dire que il ya repetition de caractere majuscules apres?
en fait jobtient la meme chose avec  
ls|grep '^a*'
a la place de me montrer le ficchier aaa par ex ,y me les mets tous a lecran!
 
2/
sinon
aussi
si jecrit touch '\a'
il me cree le fichier   \a
par contre si je fais ls|grep '\a'  y me trouve pas le fichier!
les entre cotes ne doivent elle pas completement annihiler les interpreation des metacaracter?
 
3/aussi
jai un fichier aaa
coment ca se fait que si je tape:
 
ls|grep 'a\{2\}'
je lobtienne alors que la je ne lai fait repeter que 2 fois?


Message édité par nohack le 07-02-2005 à 20:57:23
Reply

Marsh Posté le 07-02-2005 à 20:53:34   

Reply

Marsh Posté le 08-02-2005 à 00:00:09    

1/ L'etoile signifie "0 fois ou plus". Donc tu cherche tous le fichier qui ont au moins 0 characteres majuscule au debut... Donc effectivement tous les fichiers matchent. Si j'ai bien compris ce que tu veux c'est "+" au lieu de "*".
 
2/ ls|grep '\\a' : dans grep, "\" sert a echapper le caratere suivant. Si tu veux avoir un "\" dans ta regexp il faut echapper le "\" avec un autre "\".
 
3/ 'a\{2\}' match si la chaine contient 2 "a" a la suite. Est ce que "aaa" contient deux "a" a la suite ? Oui. Donc ca match. Si tu ne veux matcher que les chaines qui contiennent exactement 2 a et rien d'autre, il faut faire '^a\{2\}$'.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed