import re
# list of surrounding characters to build a large regular expression
surrounding = [('\$', '\$'), ('\[', '\]'), ('{', '}')]
text = """
$remove$text
[remove]text
"""
RE_PATTERN = '|'.join(r'{0}[^{0}]*?{1}.*?'.format(*s) for s in surrounding)
print(RE_PATTERN) # \$[^\$]*?\$.*?|\[[^\[]*?\].*?|{[^{]*?}.*?
print(re.sub(RE_PATTERN,'', text))
# text
# text
如果有多个周围字符,如
{}, (), [] .. etc
,请尝试以下代码:您的正则表达式不工作,因为在第二种情况下
\1
正在尝试匹配[
。解决这一问题的一种方法是分别调用每个选项:Demo on regex101
请注意,这样做可以使第一个组不被捕获,并将替换更改为
\1
相关问题 更多 >
编程相关推荐