0
votes

expressions régulières de Python, renvoyer uniquement le premier match

J'essaie de ne rien retourner à partir de la première correspondance de la variable ci-dessous xxx

en utilisant l'expression suivante: xxx

selon les documents, < / p> xxx

doit renvoyer des valeurs uniques, mais je reçois xxx

code: xxx < / pré>


5 commentaires

Ces deux valeurs ne sont évidemment pas la même, et donc elles sont uniques. Remarque: "unique" ne signifie pas "un seul" . Cela signifie juste " aucune répétition ".


Dupliqué possible de Expression régulière pour arrêter au premier match


Jetez un coup d'œil à Stackoverflow.com / Questions / 2503413 / ...


Vous pouvez également supprimer tous les balises , re.sub (r '= (?: \ ^ M)? |
| [\ r \ n] + ',' ', m.group (1)) , et liste (défini ()) fera son travail. FYI: le à nouveau n'est plus nécessaire, il n'y a pas d'ancrages dans le motif.


Merci encore Wikor, tu m'as sauvé à nouveau, ça marche !!


3 Réponses :


0
votes

Comme le souligne le commentaire, vos exemples ne sont pas uniques, de sorte que la fonctionnalité semble correcte. Ajoutez un terme à la méthode sous pour supprimer les balises (puis votre commande définie supprimera les entrées en double). Ou si vous souhaitez seulement la première correspondance du Email_body Essayez peut-être simplement utiliser la méthode recherche dans le package REGEX.


3 commentaires

Pourquoi ne pas inclure du code pour élaborer votre point? Aussi n'est pas une balise ici, il ne s'agit que de la partie de la chaîne et de Set n'est pas une commande qu'il s'agit d'une classe qui convertissent les valeurs en hayes et lorsque deux Les valeurs génèrent la même valeur de hachage qui correspond à la manière dont nous obtenons les valeurs uniques et c'est la raison pour laquelle ils sont non ordonnés.


Merci de réponse, j'ai essayé re.sub (r '= (?: \ ^ m \

)? | [\ r \ n] + mais rien n'a changé


Je crois ce que vous avez suggéré ci-dessus essaient de correspondre au
directement après la m. Ce qui suit devrait fonctionner: req (r '(m. * :) | (_ s) + | (
) ', ...) . Mais je préfère que la réponse du prédicat est donc en votant.



0
votes

Si vous voulez que vous puissiez améliorer votre regex à Ceci :

\bMACHINE:\s*([^<]*(?:(?:\r\n?|\n)\S+)?)


0 commentaires

0
votes

Votre regex principale utilisée dans re.finditer correspondances tags. Tout ce dont vous avez besoin est de les supprimer avec le re.sub : xxx

Vous pouvez également l'utiliser avec re.findall comme ceci: xxx

note re.m est redondant et est supprimé.


Matchs correspondent
, alors \ s * correspond à 0+ blanchissaces, (?: / \ s * )? correspond à une séquence ovelle de / et 0+ WhitSpaces, et > correspond enfin > . Donc, il peut correspondre à
, ,
et même
.


0 commentaires