Замените все не буквы / цифры на регулярное выражение - PullRequest
2 голосов
/ 01 ноября 2019

У меня есть строка 'hello (new)', и я хотел бы удалить все не цифры и буквы. Один из способов сделать это - найти все буквы и соединить их:

>>> ''.join(re.findall(r'[a-zA-Z0-0]', 'hello (new)'))
'hellonew'

Как мне сделать обратное, то есть заменить все не-символы на ''? До сих пор у меня было:

>>> re.sub(r'^[a-zA-Z0-9]+', '', 'hello (new)')
' (new)'

Но это немного.

Ответы [ 2 ]

1 голос
/ 01 ноября 2019

Вы можете найти любой несловой символ 1+ раз, используя \W+

Если вы хотите сохранить подчеркивание, совпадающее с \ w, вы можете использовать класс символов [\W_]+.

Python demo

import re

print(re.sub(r'\W+', '', 'hello (new)'))

Выход

hellonew
1 голос
/ 01 ноября 2019

Вместо этого вы должны использовать отрицательный класс символов и удалить якорь спереди:

re.sub(r'[^a-z0-9]+', '', 'hello (new)', re.IGNORECASE)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...