В регулярном выражении только суб-буквенно-цифровые символы - PullRequest
0 голосов
/ 23 октября 2018

Я пытаюсь удалить символы из этой строки в Python, используя re.sub:

re.sub(r"(?![a-z0-9])", "_", "some:long:str-:that:can't+have+symbols".lower())

Ответ, который я ищу:

some_long_str__that_can_t_have_symbols

но это не работает.Я определенно могу сопоставить буквенно-цифровые символы, используя findall (), а затем join (), чтобы создать новую строку, но это полностью исключает символ, поэтому в итоге я пишу неэффективный цикл for.

Я думаю, проблема в том, как я отрицаю свое выражение.Есть идеи?

1 Ответ

0 голосов
/ 23 октября 2018

Используйте как:

import re
result = re.sub(r"([^a-z0-9])", "_", "some:long:str-:that:can't+have+symbols".lower())
print(result)

Вывод:

some_long_str__that_can_t_have_symbols
...