Python正则表达式,避免跳过括号

Python正则表达式,避免跳过括号,python,regex,brackets,Python,Regex,Brackets,我想将正则表达式替换为“*”,但前提是正则表达式位于外部。关键是不要干扰html标记 我用它来代替: re.sub(r'SOMEREGEX(?=[^>]*(<|$))', '*', line) 那么这个, fzzzzzzzzz<HTMLTAG>zzzzzzzk fzzzzk 会变成一个“*”,这是我不想要的。我如何克服这个问题 限制条件: -所有括号都匹配 -没有嵌套的括号 -SOMEREGEX由用户提供。我不想改变这一点。您可以尝试用字符类[^]替换字符-“任何字

我想将正则表达式替换为“*”,但前提是正则表达式位于外部。关键是不要干扰html标记

我用它来代替:

re.sub(r'SOMEREGEX(?=[^>]*(<|$))', '*', line)
那么这个,

fzzzzzzzzz<HTMLTAG>zzzzzzzk
fzzzzk
会变成一个“*”,这是我不想要的。我如何克服这个问题

限制条件:

-所有括号都匹配

-没有嵌套的括号


-SOMEREGEX由用户提供。我不想改变这一点。

您可以尝试用字符类
[^]
替换
字符-“任何字符”,该字符类匹配除尖括号以外的任何字符
。这将给出正则表达式
f[^]*k
。这将匹配
facebook
,但不匹配
facebook


不过,仍然有一些事情可能会出问题。您是否考虑过使用合适的HTML解析器而不是正则表达式?BeautifulSoup简单、美味且有趣。

在结束和开始尖括号之间搜索:

re.sub(r'(^|>)f[^<]*k(<|$)', r'\1*\2', line)

<代码> Re.Sub(r′(^>)f[^,我对给定的正则表达式没有任何控制权。我只想保护我所有的标签,它们可以在句子中间的任何地方。你能澄清你的约束吗?(编辑你的问题,包括任何相关的附加信息)。
re.sub(r'(^|>)f[^<]*k(<|$)', r'\1*\2', line)