首页 > 解决方案 > 特定乳胶命令中单词 *not* 的正则表达式

问题描述

我正在寻找一个正则表达式,它将匹配所有出现的 ,foo除非它在\ref{..}命令中。所以\ref{sec:foo}不应该匹配。

我可能想添加更多命令,稍后应排除这些命令的参数,因此解决方案在这方面应该是可扩展的。

有一些类似的问题试图检测括号中的内容等。

第一个使用替代方案有一个有趣的解决方案:\(.*?\)|(,)第一个替代方案匹配不需要的版本,第二个有匹配组。但是,由于我在搜索和替换上下文中使用它,所以我不能真正使用匹配组。

标签: regex

解决方案


为你想要的东西找到一个正则表达式将需要可变长度的查找,它仅适用于非常有限的语言(如 Python 中的 C# 和 PyPi),因此你将不得不解决一个不太完美的问题。foo只要您没有花括号嵌套的花括号,就可以使用此正则表达式匹配不在花括号内的内容,

\bfoo\b(?![^{}]*})

这将不匹配foo内部\ref{sec:foo}甚至内部,somethingelse{sec:foo}因为您可以看到它仅不匹配foo不包含在花括号中的 a。如果您需要一个精确的解决方案,那么它将需要可变长度的支持,正如我所说,支持非常有限的语言。

正则表达式演示


推荐阅读