用于替换所有由普通字符包裹的特殊字符的正则表达式

Regex for a replacing all special characters that are wrapped by normal characters

以下代码片段似乎不起作用。我希望将“This$#is”更改为“This is”,而“This$#”应保留为“This$#”,因为它末尾没有正常字符。

import re

script = "This$#is"
sc = re.sub("^[A-Za-z]+([$#]+)[A-Za-z]+", " ", script)
print(sc)

您可以匹配字符 class 的 1 次或多次重复,并在右侧声明一个字符 a-z:

[$#]+(?=[A-Za-z])

regex101 观看比赛。

import re

script = "This$#is\nThis$#"
sc = re.sub(r"[$#]+(?=[A-Za-z])", " ", script)
print(sc)

输出

This is
This$#

如果您想保留字符串开头的锚点,您还可以使用捕获组并在替换中使用它。

import re

script = "This$#is\nThis$#"
sc = re.sub("^([A-Za-z]+)[$#]+(?=[A-Za-z])", r" ", script)
print(sc)