1
votes

Regex pour trouver des caractères spéciaux partiellement correspondants en python

J'ai des chaînes et je veux faire correspondre les caractères spéciaux (@@, $$,> XXX

Je veux suivre o / p:

@@
$$
><
....
^


1 commentaires

Certains des caractères que vous voulez faire correspondre sont des métacaractères regex, ont une signification spéciale et doivent donc être échappés. Essayez: re.findall (r '@@ | \ $ \ $ | <> | ... | \ ^', a)


3 Réponses :


0
votes

Votre expression semble très bien, mais il manque quelques éléments:

['@@', '$$', '><', '....', '^']

Sortie

import re

string = """
aaa@@aa;aa$$aaa;aa><aaa;aa....aaa;aaa^aa
aaa@&@aa;aa$&$aaa;aa<>aaa;aa...aaa;aaaaa

"""

expression = r'@@|\$\$|><|\^|\.\.\.\.'
matches = re.findall(expression, string)

print(matches)

Si vous souhaitez explorer / simplifier / modifier l'expression, c'est expliqué dans le panneau supérieur droit de regex101.com . Si tu veux, tu peut également regarder en ce lien , comment il correspondrait contre quelques exemples d'entrées.



0 commentaires

1
votes

Vous pouvez essayer quelque chose comme ci-dessous:

>>> a='aaa@@aa;aa$$aaa;aa><aaa;aa....aaa;aaa^aa'
>>> match=re.findall('@{2}|[$]{2}|><|[.]{4}|\^', a)
>>> match
['@@', '$$', '><', '....', '^']

Modifier: Lorsque vous placez un caractère spécial entre crochets, il perd sa signification, par exemple, [. ] correspondra au caractère . .


0 commentaires

3
votes

Votre question n'est en réalité qu'une faute de frappe, car vous avez oublié d'échapper les métacaractères regex tels que $ et ^ . Mais, je suggérerais une autre approche, re.split:

['@@', '$$', '><', '^']

L'idée ici est de diviser la chaîne sur n'importe quel groupe de caractères autre em > que ceux que vous souhaitez conserver. Le script ci-dessus s'imprime:

a = 'aaa@@aa;aa$$aaa;aa><aaa;aa....aaa;aaa^aa'
parts = re.split(r'[^@$<>\^]+', a)[1:-1]
print(parts)


0 commentaires