当前位置: 首页 > 知识库问答 >
问题:

特定latex命令中单词*not*的正则表达式

费和惬
2023-03-14

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

我可能想添加更多的命令,稍后应该排除这些命令的参数,这样解决方案就可以在这方面进行扩展。

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

  • 正则表达式只匹配逗号而不匹配括号

第一种方法有一个有趣的解决方案,它使用了替代方法:\(.*?\)|(,)第一种方法匹配不需要的版本,第二种方法匹配组。然而,由于我使用的是搜索


共有1个答案

陈增
2023-03-14

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

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

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

正则表达式演示

 类似资料:
  • 问题内容: 我需要有关正则表达式的帮助:我正在尝试检查一个句子是否包含特定单词。 让我们以这个主题的标题为例: “正则表达式以查找字符串中的特定单词” 我需要查找它是否包含 if ,在这种情况下它是错误的。 我无法使用包含的方法,因为在这种情况下它将返回true( 如果为 * ic, 则为 spec * ) 我当时在考虑使用方法匹配,但我有点正则表达式。 基本上,匹配方法输入中的正则表达式需要指定

  • 我需要一些正则表达式方面的帮助:我正在尝试检查一个句子是否包含特定的单词。 让我们以本主题的标题为例: “在字符串中查找特定单词的正则表达式” 我需要找出它是否包含if这个词,在这个例子中它是假的。 我不能使用方法包含,因为它在这种情况下会返回true(规范*if*ic) 我在考虑使用matches方法,但我对正则表达式有点不在行。 基本上,匹配方法的输入中的正则表达式需要指定在我要查找的单词之前

  • 问题内容: 我正在使用Python,并且想在遇到句号(句号)或空格之前匹配所有单词。 目前,我正在使用: 上面的代码不匹配任何内容。我需要作为我的输出。 问题答案: 如果您只是从字符串中获取子集,我不明白为什么要使用正则表达式。 运作方式相同: 例: 正则表达式速度慢,设计笨拙且难以调试。肯定有occassions使用它,但如果你只是要提取的文本和,然后我不认为是这些场合之一。 参见:https

  • 问题内容: 我想在Elastisearch中使用单词边界进行正则表达式查询,但是看起来Lucene正则表达式引擎不支持。我可以使用哪些解决方法? 问题答案: 在ElasticSearch regex风格中,没有直接等效于单词边界的功能。最初是一样的东西,如果用一个字字符开始,并且尾部就像如果用一个字字符结束。 因此,我们需要确保在字符串的前后或字符串的开始/结束处有一个非单词char 。由于正则表

  • 我正在尝试抓取模式中第一个连字符之后的文本 但在此模式中: 我希望它跳过‘不想要的’文本,并匹配的文本后面的下一个连字符(DesiredText)。我创建了一个具有两种模式regex101,并需要修改我的基本regex,以便如果中存在一个或多个我不想匹配的单词,那么它将匹配第二个连字符文本: https://regex101.com/r/vesqh3/1

  • 我正在使用以下正则表达式: 我的目标是只验证数字(int和decimal),空格, ( ), 点,AND,OR。其他一切都是不允许的。它看起来像是工作的,但是我对单词边界\bAND\b和\bOR\b Eg有问题。我不能输入ANDWE或EEE或任何组合,但我能做的是AN或A。如何在字符串中只允许两个单词AND或OR?它们在字符串中是可选的。 输入示例 0.10和23-有效 12和(15或0.2)-有