7
votes

Qu'est-ce que "?:" Moyenne dans une expression régulière de Python?

ci-dessous est l'expression régulière Python. Qu'est-ce que le ?: Code> signifie? Que fait l'expression globale? Comment correspondra-t-il une adresse MAC telle que " 00: 07: 32: 12: AC: DE: EF CODE>"

re.compile(([\dA-Fa-f]{2}(?:[:-][\dA-Fa-f]{2}){5}), string)  


0 commentaires

3 Réponses :


6
votes

Utiliser ?: comme dans (?: ...) fait le groupe non-capturant pendant le remplacement. Pendant la recherche, il n'a aucun sens.

Votre regex signifie xxx


espère que cela aide. < / p>


3 commentaires

Merci, mais comment cette expression régulière correspond à Mac Adresse "00: 07: 32: 12: AC: DE: EF"


ya ça marche .. merci ... mais je veux la réponse en tant que groupe unique


Essayez ceci (? Est) \ b (?: [A-F0-9] {2}) (? :: [A-F0-9] {2}) {6} .



10
votes

It (?: ...) code> signifie un ensemble de parenthèses de regroupement non capturant.

Normalement, lorsque vous écrivez (...) code> dans un Regex, il "capture" le matériau correspondant. Lorsque vous utilisez la version non capturée, il ne capture pas. P>

Vous pouvez obtenir aux différentes pièces correspondues par le regex en utilisant les méthodes dans le re code> package après que le regex correspond à une chaîne particulière. P>


Comment cette expression régulière correspond à Mac Adresse "00: 07: 32: 12: AC: DE: EF"? P> BlockQuote>

C'est une question différente de ce que vous avez initialement demandé. Cependant, la partie REGEX est la suivante: p> xxx pré>

la plupart des parenthèses extérieures sont capturer des parenthèses; Ce qu'ils entourent seront disponibles lorsque vous utilisez la regex contre une chaîne avec succès. p>

Le [\ da-fa-f] {2} code> correspond à un chiffre ( \ d code>) ou les chiffres hexadécimaux a-fa-f] code>, dans une paire {2} code>, suivi d'un groupe non capturant où le matériau correspondant est un côlon ou un tiret (: code> ou - code>), suivi d'une autre paire de chiffres hexagonales, avec l'ensemble répété exactement 5 fois. P>

p = re.compile(^([\dA-Fa-f]{2}(?:[:-][\dA-Fa-f]{2}){5})$)


2 commentaires

Merci, mais comment cette expression régulière correspond à Mac Adresse "00: 07: 32: 12: AC: DE: EF"


@rawb ... ça marche et cela aussi comme un groupe RE.Findall l'imprime comme un groupe unique



0
votes

(?: ...) signifie un groupe non cathodique. Le groupe ne sera pas capturé.


0 commentaires