#1 Le 17/04/2014, à 08:48
- jehutyy
Explication d'une expression rationnelle
Bonjour
N'ayant pas trouvé de réponse explicant cette exemple je me tourne vers vous:
Je ne comprend pas du tout cette regex: (.)+\1
Selon moi, elle match pour n'importe quel caratère au moins une fois, néanmoins je ne comprend pas ce \1, que signifie t-il?
J'ai testé cet opérateur avec la regex (A|B|C)\1 sur la chaine de caractère (AAABBBCCC) et avec un grep -E, elle me renvoie AA, BB, CC...
et malheureusement je n'arrive pas à interpreté ce résultat.
Quelqu'un aurait t-il une explication ?
Bien cordialement
jehutyy
Hors ligne
#2 Le 17/04/2014, à 08:54
- pingouinux
Re : Explication d'une expression rationnelle
Bonjour,
Je ne comprend pas du tout cette regex: (.)+\1
..........................................
J'ai testé cet opérateur avec la regex (A|B|C)\1
Ce sont deux expressions différentes.
Peux-tu faire un copier-coller de la commande que tu as lancée, et du résultat ?
Hors ligne
#3 Le 17/04/2014, à 09:44
- jehutyy
Re : Explication d'une expression rationnelle
Oui pardon je me suis mal exprimé, ce que je n'ai pas compris c'est \1, je n'ai pas lancé de commande spécifique, en lisant le man j'ai vu cet opérateur et en cherchant des exemples j'ai trouvé, (.)+\1
et je n'arrive pas à déduire le fonctionnement du "\1".
Hors ligne
#4 Le 17/04/2014, à 10:13
- pingouinux
Re : Explication d'une expression rationnelle
Voici un extrait de man grep
Back References and Subexpressions
The back-reference \n, where n is a single digit, matches the substring
previously matched by the nth parenthesized subexpression of the
regular expression.
Recherche de 2 caractères identiques qui se suivent
$ grep -E -o '(.)\1' <<<"AAAABBBCCCDDEFGH"
AA
AA
BB
CC
DD
Recherche d'un nombre pair de caractères identiques qui se suivent
Recherche de 2 caractères (ou 2 expressions) identiques qui se suivent
$ grep -E -o '(.+)\1' <<<"AAAABBBCCCDDEFGH"
AAAA
BB
CC
DD
$ grep -E -o '(.+)\1' <<<"ABcdABcdAAABBCCCDDEFGH"
ABcdABcd
AA
BB
CC
DD
Là, je pense que c'est : Recherche d'une suite quelconque de caractères, le dernier étant doublé
$ grep -E -o '(.)+\1' <<<"AAAABBBCCCDDEFGH"
AAAABBBCCCDD
Édité : Explication pour le dernier cas
Re-édité : Complément pour le 2ème cas
Dernière modification par pingouinux (Le 17/04/2014, à 11:17)
Hors ligne
#5 Le 17/04/2014, à 11:03
- tiramiseb
Re : Explication d'une expression rationnelle
Salut,
Souvent, on utilise cette notation pour rappeler, dans la seconde partie d'un "sed s///", une chaîne qui avait été "marquée" par des parenthèses dans la première partie.
(je sais pas si cette explication est compréhensible...)
Sébastien Maccagnoni - https://www.maccagnoni.eu - https://www.domotego.com
Hors ligne
#6 Le 17/04/2014, à 11:38
- jehutyy
Re : Explication d'une expression rationnelle
Hum c'est un peu nébuleux en effet, mais avec vos deux définitions je vais essayer d'experimenter pour mieux comprendre, merci beaucoup!
Hors ligne
#7 Le 17/04/2014, à 11:49
- tiramiseb
Re : Explication d'une expression rationnelle
Exemple simple pour être moins nébuleux :
$ echo "salut les copains" | sed 's/salut les \(.*\)/les \1, dehors/'
les copains, dehors
Dernière modification par tiramiseb (Le 17/04/2014, à 11:50)
Sébastien Maccagnoni - https://www.maccagnoni.eu - https://www.domotego.com
Hors ligne
#8 Le 17/04/2014, à 12:03
- moko138
Re : Explication d'une expression rationnelle
HS : @ tiramiseb : Je crois que mon mail s'est perdu ; s'il te plaît, pourrais-tu intervenir là, car je sèche.
Merci !
/HS
%NOINDEX%
Un utilitaire précieux : ncdu
Photo, mini-tutoriel : À la découverte de dcraw
Hors ligne
#9 Le 17/04/2014, à 12:06
- tiramiseb
Re : Explication d'une expression rationnelle
HS : non moko138, ton mail ne s'est pas perdu. Tu veux une intervention "à la demande" ? C'est payant, c'est mon gagne-pain, tu le sais.
J'aide sur le forum si je veux, quand je veux et quand je pense que je peux apporter quelque chose...
Sébastien Maccagnoni - https://www.maccagnoni.eu - https://www.domotego.com
Hors ligne
#10 Le 17/04/2014, à 12:16
- moko138
Re : Explication d'une expression rationnelle
Reçu.
%NOINDEX%
Un utilitaire précieux : ncdu
Photo, mini-tutoriel : À la découverte de dcraw
Hors ligne