0
votes

Capture de python à partir de regex

J'écris une regex pour trouver un ? et tout capturer avant cela. Voici ce que j'ai jusqu'à présent. XXX

Comment puis-je utiliser la regex pour tout capturer avant le ? . C'est quelque chose appelé un look derrière mais je ne suis pas sûr comment l'utiliser.


3 commentaires

4 Réponses :


1
votes

4 commentaires

Je voulais aller mieux avec les expressions.


Oh, je vois, d'accord, donnez-moi une minute, je vais faire des modifications et revenir avec une réponse de regex.


Merci. Je sais que cela a quelque chose à voir avec l'utilisation de <= mais j'ai essayé de placer cela, mais j'ai continué à obtenir aucun lorsque je imprime f1.group (0) ou f1.group (1)


Débarrassez-vous de la barre oblique inverse des crochets.



1
votes

Possibilités multiples:

  1. soit tout ce n'est pas un point d'interrogation: [^?] +
  2. ou un quantificateur paresseux avec des groupes de capture: (. +?) \?
  3. ou un lookahead positif: . +? (? = \ \?)

    Voir les démos correspondants sur regex101.com ( 1 , 2 et 3 ).


1 commentaires

Merci à tout le monde pour toute l'aide



1
votes

Vous n'avez pas besoin de regarder derrière.

f = 'file.doc?gs_f'
re.search(r'([\w\.]*(?=\?))',f).group(0)


0 commentaires

1
votes

Oui, il s'appelle positif. Vous devez regarder en avant jusqu'à ce que ? vient. Voici la regex qui effectue votre REQT. Faites-moi savoir si vous avez une question.

regex: '. * (? = \?)'

ici,
. * tire tout.
(? =) est un look positif à venir
\ caractère d'échappement pour le symbole de point d'interrogation. Comme le symbole de point d'interrogation est Quantifier dans Regex.


0 commentaires