Чтобы сопоставить символ пунктуации с регулярным выражением в Python, вы можете использовать шаблон (?:[^\w\s]|_)
, он соответствует любому символу, кроме буквы, di git или пробела .
Таким образом, вам нужно сопоставить один или несколько пробелов (\s+
), которым непосредственно предшествует знак пунктуации ((?<=[^\w\s]|_)
) и сразу же следует такой символ ((?=[^\w\s]|_)
) :
(?<=[^\w\s]|_)\s+(?=[^\w\s]|_)
См. онлайн-демонстрацию регулярных выражений .
Python демо :
import re
text = "This is! ? a test! ?"
print( re.sub(r"(?<=[^\w\s]|_)\s+(?=[^\w\s]|_)", "", text) )
# => This is!? a test!?