Regex en python
Utilisateur anonyme
-
heyquem Messages postés 808 Statut Membre -
heyquem Messages postés 808 Statut Membre -
Bonjour, voilà ben comme d'hab prob avec les regex en python !!
Je n'arrive pas à reconnaitre cette chaine de caractéres , est je commence à désespérer !!
#age = 25 )
J'utilise pourtant bien
code_ligne="#age = 25 )"
if re.search('^#[a-z-A-Z0-9] = [0-9] \)',code_ligne):
/// qu'est ce qui ne va pas dans ma regex ?? ///
Merci de votre compréhension cordialement tsunaiken !!
Je n'arrive pas à reconnaitre cette chaine de caractéres , est je commence à désespérer !!
#age = 25 )
J'utilise pourtant bien
code_ligne="#age = 25 )"
if re.search('^#[a-z-A-Z0-9] = [0-9] \)',code_ligne):
/// qu'est ce qui ne va pas dans ma regex ?? ///
Merci de votre compréhension cordialement tsunaiken !!
3 réponses
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 !!
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.