regex - 特定乳胶命令中单词 *not* 的正则表达式
问题描述
我正在寻找一个正则表达式,它将匹配所有出现的 ,foo
除非它在\ref{..}
命令中。所以\ref{sec:foo}
不应该匹配。
我可能想添加更多命令,稍后应排除这些命令的参数,因此解决方案在这方面应该是可扩展的。
有一些类似的问题试图检测括号中的内容等。
第一个使用替代方案有一个有趣的解决方案:\(.*?\)|(,)
第一个替代方案匹配不需要的版本,第二个有匹配组。但是,由于我在搜索和替换上下文中使用它,所以我不能真正使用匹配组。
解决方案
为你想要的东西找到一个正则表达式将需要可变长度的查找,它仅适用于非常有限的语言(如 Python 中的 C# 和 PyPi),因此你将不得不解决一个不太完美的问题。foo
只要您没有花括号嵌套的花括号,就可以使用此正则表达式匹配不在花括号内的内容,
\bfoo\b(?![^{}]*})
这将不匹配foo
内部\ref{sec:foo}
甚至内部,somethingelse{sec:foo}
因为您可以看到它仅不匹配foo
不包含在花括号中的 a。如果您需要一个精确的解决方案,那么它将需要可变长度的支持,正如我所说,支持非常有限的语言。
推荐阅读
- php - 从 Laravel Nova 动作下载 Zip 文件
- python - SQLite 请求显示“提供的绑定数量不正确。当前语句使用 0,提供了 1 个”
- r - 如何突出显示 Tukey 测试中的显着结果
- python - 使用 Pandas 读取 Excel 表会给出 - OverflowError: Python int too large to convert to C int
- python-3.x - 如何在kivy代码中调用函数
- google-earth-engine - 将资产上传到 Google 地球引擎时出错
- python - 将列表值添加到新列表
- powerbi - 试图在 PowerBI 中创建一个错误,根据日期切片器中的单个选定值,它可以为我提供最近 6 个月的准确度
- reactjs - react-select async creatable 不推荐
- mongodb - 如何通过 JDBC 驱动程序连接到 mongo atlas 源