Dans les deux codes suivants, quelle est la différence entre - et - ? S’agit-il d’un métacaractère ?
r = re.compile(r"http(s)?://[a-zA-z0-9\.\-/]+")
r = re.compile(r">([a-zA-Z0-9.-]+@[a-zA-Z.-]+)<")
Et à quoi correspondent les symboles < > ? Est-ce que c’est pour éviter les doublons dans les résultats retournés ? (cf question pour retrouver les emails dans l’extrait du code html d’un lien)
Dans une expression régulière le tiret - correspond à 2 choses :
Entre deux autres caractères au milieu de crochets [], il s’agit d’un métacaractère. a-z signifie ‹ tous les caractères entre a et z (dans le code ASCII), donc ici tous les lettres minuscules ›
Après un antislash \ ou en dernière position dans des crochets, il correspond à la présence du caractère tiret - . Il faut bien noter que pour enlever tout ambiguïté, - ne représente le caractère - qu’en position finale dans des crochets.
Il en est de même pour l’underscore _ qui représente le caractère underscore _ en fin de crochets.
Les symboles > et < représente respectivement les caractères > et <. Dans l’exemple du cours, c’est en effet parce que les adresses email se trouvent entre 2 balises html que l’on indique > avant le mail (la balise précédente se ferme) et < après le mail (la balise suivante s’ouvre).
J’espère que cela aura répondu à vos questions.
Si c’est le cas, vous pouvez indiquer cette réponse comme utile en cochant le symbole sous ce message.
Sinon, n’hésitez pas à demander des informations complémentaires
Merci pour ton retour ! C’est très clair.
J’ai une autre question qui est arrivée avec ta réponse :
Sur le code ci-dessous, le point n’a pas de caractère \ devant lui donc on utilise ici sa fonction (remplacer n’importe quel caractère). Alors pourquoi met-on un - ? Le point n’est pas censé pouvoir le remplacer ?
A priori le point dans des [ … ] pourrait signifier n’importe quel caractère (sauf le saut de ligne \n) comme c’est le cas en dehors des crochets.
Mais cela serait donc inutile de faire des crochets et on pourrait tout remplacer par une point.
Ainsi, un point entre crochet n’est pas compris comme un métacaractère et n’a pas besoin d’un antislash pour être compris comme un point (même si cela peut porter à confusion et que . sera similaire).
J’espère que cela répond bien à ta question, qui est bienvenue pour d’autres utilisateurs
Juste pour confirmer ce que vous avez bien expliqué Théophile, le point en dehors du crochet en tant que métacaractère représente vraiment n’importe quoi même les espaces à ce que j’ai pu expérimenté?
seul le saut de ligne n’est pas pris en compte absolument rien d’autre?
Merci juste pour la confirmation
Par contre tout métacaractère pert sa fonction lorsqu’il est entre crochet?
Ce n’est pas le cas des raccourcis par contre? Les caractères spéciaux doivent-il aussi être précédés d’un \ entre crochet?
Ca fait pas mal d’élements alors pas évident de tout maitriser dès la première approche…
Merci d’avance
pourtant le métacaractère ^ garde bien son caractère métacaractère en crochet comme le montre l’exemple ci-joint, non?
J’ai juste besoin d’être sûr de bien tout saisir
Une question en core qui me vient, comment indiquer le caractère spécial \ en crochet sachant que c’est lui même qui indique la présence des caractères spéciaux \ : ne fonctionne pas
Alors non, c’est vrai pour le point mais pas pour tous les metacaractères.
Avec un \ on est sûrs que le métacaractère a perdu sa fonction. Je préconise de toujours utiliser \ devant un caractère spécial pour être sûr qu’on l’utilise bien pour représenter un caractère
une dernière question sur le premier cours de text mining. \ précède les caractères spéciaux dans le crochet. Comment doit-on faire si on veut le mettre lui même en caractère spécial? \???
Attention à l’affichage cependant, dans les réponses l’antislash sera affiché comme un double antislash même si dans la chaîne de caractères il n’y en a qu’un !
Bonjour,
dans r = re.compile(re"http(s)?://[a-zA-Z0-9.-/]+")
Désolée , je ne comprends pas à quoi sert le « ? » de re"http(s)?: (ce point ci pas encore comprit) !)
et pourquoi en fin de [], le « - » est précédé de l’antislach \ => ah ben si , du coup en écrivant ma question je comprends pourquoi !
(car « - » est un métacaractère et il faut le précéder d’un \ pour lui ôter , quand il est dans [] son pouvoir de métacaratère ? c’est bien ça ?)
Le point d’interrogation ? est un métacaractère indiquant que l’expression précédente doit être présente exactement 0 ou 1 fois.
Ici, cela indique que cette regex repèrera les liens http://etc et les liens https://