Если вы не возражаете, включив символ _
в качестве буквенно-цифровых данных, вы можете извлечь все не-буквенно-цифровые данные с помощью этого:
some_string = "A+*&N%$^S%%$"
import re
result = re.findall(r'\b\W+\b', some_string) # sets result to: ['+*&', '%$^']
Обратите внимание на мое использование \b
вместо чего-то вроде \w
или [^\W]
.
\w
и [^\W]
каждый соответствует одному символу, поэтому если ваша буквенно-цифровая строка (между нужным текстом) ровно один символто, что, по вашему мнению, должно соответствовать следующему совпадению, не будет совпадать.
Но поскольку \b
является «границей слов нулевой ширины», не имеет значения, сколько здесь буквенно-цифровых символов,пока есть хотя бы один.