Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

re à partir d'un tuple ?

7 réponses
Avatar
Pierre Maurette
Bonjour,

Je me demande s'il existe un moyen d'utiliser directement un tuple de
caractères pour définir un pattern de re. Voici ce que je fais pour
l'instant:

operators = ('*', '+', '-', '/', '(', ')')
pattern1 = r'[\s' + '\\'.join(z for z in operators) + ']*'
test = ' (mrcontentcoluum - mrsidebar) + 10px '
print re.compile(pattern1).split(test.strip())[1:]

Je veux obtenir (et j'obtiens):

['mrcontentcoluum', 'mrsidebar', '10px']

Accessoirement, y aurait-il une solution sans re, c'est à dire un genre
de split paramétré par une liste de séparateurs mis en OU ?

Merci, bonne soirée,

--
Pierre Maurette

7 réponses

Avatar
Méta-MCI \(MVP\)
Bonsoir !

Et, tout simplement :
operators = ('*', '+', '-', '/', '(', ')')
pattern1 = r'[s' + ''.join(operators) + ']*'

ça n'irait pas ?

@+
--
MCI
Avatar
Pierre Maurette
Bonsoir !

Et, tout simplement :
operators = ('*', '+', '-', '/', '(', ')')
pattern1 = r'[s' + ''.join(operators) + ']*'

ça n'irait pas ?


Ooops, je ne sais pas comment j'en étais arrivé à cette incongruité.
Merci. Bon, ça laisse quand la question ouverte.

--
Pierre Maurette

Avatar
Bruno Desthuilliers
Bonjour,

Je me demande s'il existe un moyen d'utiliser directement un tuple de
caractères pour définir un pattern de re. Voici ce que je fais pour
l'instant:

operators = ('*', '+', '-', '/', '(', ')')
pattern1 = r'[s' + ''.join(z for z in operators) + ']*'
test = ' (mrcontentcoluum - mrsidebar) + 10px '
print re.compile(pattern1).split(test.strip())[1:]

Je veux obtenir (et j'obtiens):

['mrcontentcoluum', 'mrsidebar', '10px']

Accessoirement, y aurait-il une solution sans re, c'est à dire un genre
de split paramétré par une liste de séparateurs mis en OU ?


Heu... re.split() ?

Bon, ok ------------>[]

Avatar
Pierre Maurette
Bonjour,

Je me demande s'il existe un moyen d'utiliser directement un tuple de
caractères pour définir un pattern de re. Voici ce que je fais pour
l'instant:

operators = ('*', '+', '-', '/', '(', ')')
pattern1 = r'[s' + ''.join(z for z in operators) + ']*'
test = ' (mrcontentcoluum - mrsidebar) + 10px '
print re.compile(pattern1).split(test.strip())[1:]

Je veux obtenir (et j'obtiens):

['mrcontentcoluum', 'mrsidebar', '10px']

Accessoirement, y aurait-il une solution sans re, c'est à dire un genre de
split paramétré par une liste de séparateurs mis en OU ?


Heu... re.split() ?

Bon, ok ------------>[]


Je ne saisis pas, désolé. Je peux effectivement faire:

print re.split(re.compile(pattern1), test.strip())[1:]

mais je ne vois pas trop la différence...

--
Pierre Maurette


Avatar
Guillaume
Bon, ok ------------>[]


Je ne saisis pas, désolé.


->[]
Raccourci "usuel" désignant une personne prenant la porte, voulant dire
"ok j'ai sorti ma bétise, maintenant je me punis et je sors"

Bref, c'était une blague. Pourrie ou non, à chacun sa propre appréciation ;)

--
Guillaume


Avatar
Franssoa
Je ne saisis pas, désolé. Je peux effectivement faire:
print re.split(re.compile(pattern1), test.strip())[1:]
mais je ne vois pas trop la différence...

Je sais que je ne répond pas à la question, mais dans ce cas précis,

est-ce que le fait d'avoir des opérateurs valide est important ?
Si non, un simple re.findall() peut-il faire ton affaire ?

test = ' (mrcontentcoluum - mrsidebar) + 10px '
re.findall("w+",test)
['mrcontentcoluum', 'mrsidebar', '10px']




--
Franssoa



Avatar
Bruno Desthuilliers
Bonjour,

Je me demande s'il existe un moyen d'utiliser directement un tuple de
caractères pour définir un pattern de re. Voici ce que je fais pour
l'instant:

operators = ('*', '+', '-', '/', '(', ')')
pattern1 = r'[s' + ''.join(z for z in operators) + ']*'
test = ' (mrcontentcoluum - mrsidebar) + 10px '
print re.compile(pattern1).split(test.strip())[1:]

Je veux obtenir (et j'obtiens):

['mrcontentcoluum', 'mrsidebar', '10px']

Accessoirement, y aurait-il une solution sans re, c'est à dire un
genre de split paramétré par une liste de séparateurs mis en OU ?


Heu... re.split() ?

Bon, ok ------------>[]


Je ne saisis pas, désolé.


C'était une bêtise (du vendredi). La solution habituelle pour "un
genre de split paramétré par une liste de séparateurs mis en OU", c'est
précisément re.split().