Regex en python
Fermé
Utilisateur anonyme
-
18 janv. 2011 à 00:56
heyquem Messages postés 759 Date d'inscription mercredi 17 juin 2009 Statut Membre Dernière intervention 29 décembre 2013 - 18 janv. 2011 à 23:31
heyquem Messages postés 759 Date d'inscription mercredi 17 juin 2009 Statut Membre Dernière intervention 29 décembre 2013 - 18 janv. 2011 à 23:31
3 réponses
jisisv
Messages postés
3645
Date d'inscription
dimanche 18 mars 2001
Statut
Modérateur
Dernière intervention
15 janvier 2017
934
18 janv. 2011 à 02:47
18 janv. 2011 à 02:47
Essaye par exemple
if re.search('^#[a-z-A-Z0-9]* = [0-9]* \)',code_ligne)
Johan
if re.search('^#[a-z-A-Z0-9]* = [0-9]* \)',code_ligne)
Johan
Utilisateur anonyme
18 janv. 2011 à 20:49
18 janv. 2011 à 20:49
merci ;) ça marche à priori seulement que ça ne prend pas en compte l'espace de fin entre 25 et ) Comment faire dans un cas comme celui la balancer sont pc du haut de l'immeuble ^^ !!
En faite j'ai modifier légèrement mon code pour le prendre en compte bien que j'aimerait quand même savoir pour faire les espaces !!
Sinon j'ai une nouvelle question
pour reconnaître un chaine de caractêre comme celle ci :
ma_variable = """#age = #e + 25 - #b * 42 )"""
Qu'elle regex serait à utiliser dans cette situation ?
J'ai essayer ceci :
if re.search('^#[a-zA-Z0-9]* = [a-zA-Z0-9\+\-\*]*',ma_variable):
Merci de ta compréhension , désoler de te déranger avec mes questions !!
En faite j'ai modifier légèrement mon code pour le prendre en compte bien que j'aimerait quand même savoir pour faire les espaces !!
Sinon j'ai une nouvelle question
pour reconnaître un chaine de caractêre comme celle ci :
ma_variable = """#age = #e + 25 - #b * 42 )"""
Qu'elle regex serait à utiliser dans cette situation ?
J'ai essayer ceci :
if re.search('^#[a-zA-Z0-9]* = [a-zA-Z0-9\+\-\*]*',ma_variable):
Merci de ta compréhension , désoler de te déranger avec mes questions !!
heyquem
Messages postés
759
Date d'inscription
mercredi 17 juin 2009
Statut
Membre
Dernière intervention
29 décembre 2013
131
Modifié par heyquem le 18/01/2011 à 23:38
Modifié par heyquem le 18/01/2011 à 23:38
Salut,
'#age = 25 )'
pour « reconnaitre cette chaine de caractères »:
RE = '#age = \d{2} \)'
re.search(RE, code_ligne)
c'est à dire n'importe où dans le texte
Mais si c'est pour reconnaître plus généralement une chaîne DU GENRE de '#age = 25 )':
RE = '#[a-zA-Z]+ = \d+ \)'
si ça doit être détectée au début DU TEXTE:
RE = '^#[a-zA-Z]+ = \d+ \)'
re.search(RE, code_ligne)
ou bien:
RE = '#[a-zA-Z]+ = \d+ \)'
re.match(RE, code_ligne)
si ça doit être détecté au début D'UNE LIGNE:
RE = '^#[a-zA-Z]+ = \d+ \)'
re.search(RE, code_ligne, re.MULTILINE)
s'il peut y avoir aussi des chiffres avec les lettres dans le mot:
RE = '#[a-zA-Z0-9]+ = \d+ \)'
ou
RE = '^#[a-zA-Z0-9]+ = \d+ \)'
« /// qu'est ce qui ne va pas dans ma regex ?? /// »
Seulement le tiret entre a-z et A-Z
« ça ne prend pas en compte l'espace de fin entre 25 et ) »
Ça veut dire quoi ? Savoir faire quoi ?
Si tu restes aussi vague, on ne peut rien apporter.
ma_variable = """#age = #e + 25 - #b * 42 )"""
RE = '^#[a-zA-Z]+ = [# a-zA-Z0-9+*-]+ \)'
Entre crochets, la plupart des caractères spéciaux perdent leur spécialité.
Sauf le tiret et le ^. Pour les mettre, il faut les placer de telle manière qu'ils ne peuvent pas avoir leur signification habituelle entre-crochets, par exemple pour - au début ou à la fin, mais pas entre deux autres caractères.
« pour reconnaître un chaine de caractères comme celle ci »
«COMME» celle-ci ? Ça veut dire quoi «COMME» ? Qu'est ce qui est susceptible d'être différent et qu'est qui est suceptible d'être identique à ce qui se trouve dans cette chaîne ?
Des questions trop vagues embarassent pour savoir quoi répondre exactement.
Par exemple j'ai mis [a-zA-Z]+ pour la portion "comme" 'age' parce que je ne vois pas pourquoi il y aurait des chiffres là-dedans; mais peut être qu'il y en a en fait.
PS
Par ailleurs, il n'y a que de rares personnes qui répondent à des questions sur Python sur ce forum. Tu aurais certainement intérêt à trouver un forum plus spécialisé. Avec une possibilité de poster du code correctement, et non pas les possibilités rudimentaires d'ici.
'#age = 25 )'
pour « reconnaitre cette chaine de caractères »:
RE = '#age = \d{2} \)'
re.search(RE, code_ligne)
c'est à dire n'importe où dans le texte
Mais si c'est pour reconnaître plus généralement une chaîne DU GENRE de '#age = 25 )':
RE = '#[a-zA-Z]+ = \d+ \)'
si ça doit être détectée au début DU TEXTE:
RE = '^#[a-zA-Z]+ = \d+ \)'
re.search(RE, code_ligne)
ou bien:
RE = '#[a-zA-Z]+ = \d+ \)'
re.match(RE, code_ligne)
si ça doit être détecté au début D'UNE LIGNE:
RE = '^#[a-zA-Z]+ = \d+ \)'
re.search(RE, code_ligne, re.MULTILINE)
s'il peut y avoir aussi des chiffres avec les lettres dans le mot:
RE = '#[a-zA-Z0-9]+ = \d+ \)'
ou
RE = '^#[a-zA-Z0-9]+ = \d+ \)'
« /// qu'est ce qui ne va pas dans ma regex ?? /// »
Seulement le tiret entre a-z et A-Z
« ça ne prend pas en compte l'espace de fin entre 25 et ) »
Ça veut dire quoi ? Savoir faire quoi ?
Si tu restes aussi vague, on ne peut rien apporter.
ma_variable = """#age = #e + 25 - #b * 42 )"""
RE = '^#[a-zA-Z]+ = [# a-zA-Z0-9+*-]+ \)'
Entre crochets, la plupart des caractères spéciaux perdent leur spécialité.
Sauf le tiret et le ^. Pour les mettre, il faut les placer de telle manière qu'ils ne peuvent pas avoir leur signification habituelle entre-crochets, par exemple pour - au début ou à la fin, mais pas entre deux autres caractères.
« pour reconnaître un chaine de caractères comme celle ci »
«COMME» celle-ci ? Ça veut dire quoi «COMME» ? Qu'est ce qui est susceptible d'être différent et qu'est qui est suceptible d'être identique à ce qui se trouve dans cette chaîne ?
Des questions trop vagues embarassent pour savoir quoi répondre exactement.
Par exemple j'ai mis [a-zA-Z]+ pour la portion "comme" 'age' parce que je ne vois pas pourquoi il y aurait des chiffres là-dedans; mais peut être qu'il y en a en fait.
PS
Par ailleurs, il n'y a que de rares personnes qui répondent à des questions sur Python sur ce forum. Tu aurais certainement intérêt à trouver un forum plus spécialisé. Avec une possibilité de poster du code correctement, et non pas les possibilités rudimentaires d'ici.