Regex 仅当行不包含另一个字符串时,正则表达式才匹配一个字符串
是否有一个通用正则表达式用于匹配一个字符串,但仅当一行不包含另一个字符串时 例如,我想匹配单词Regex 仅当行不包含另一个字符串时,正则表达式才匹配一个字符串,regex,Regex,是否有一个通用正则表达式用于匹配一个字符串,但仅当一行不包含另一个字符串时 例如,我想匹配单词apple,但前提是该行不包含banana。因此,以下几行: 苹果香蕉-不匹配 梨形苹果-与苹果匹配,但与梨不匹配 apple-pear-apple-匹配第一个和第二个苹果,但不匹配梨 我知道 ^((?!banana).)*$ 将匹配不包含香蕉的行。但我似乎无法仅将其与匹配的apple结合起来。您可以使用此PCRE正则表达式: .*banana.*$(*SKIP)(*F)|\bapple\b 不能评
apple
,但前提是该行不包含banana
。因此,以下几行:
苹果香蕉
-不匹配梨形苹果
-与苹果匹配,但与梨不匹配apple-pear-apple
-匹配第一个和第二个苹果,但不匹配梨^((?!banana).)*$
将匹配不包含香蕉的行。但我似乎无法仅将其与匹配的apple结合起来。您可以使用此PCRE正则表达式:
.*banana.*$(*SKIP)(*F)|\bapple\b
不能评论,因为我还没有足够的声誉。但为了补充anubhava的答案,香蕉苹果香蕉之类的东西会起作用:
\b(?!.*banana)apple\b(?!.*banana)
编辑:
你是对的;阿维纳什·拉吉的答案看起来很有效。你可以试试这个正则表达式
(?<!banana.)\b(?!.*banana)apple\b
这将在字符串banana
不存在的行中捕获字符串apple
您可能只需要两个正则表达式。有没有非常迫切的需要一次完成?那“香蕉苹果”呢?这是一个可行的选择吗?你使用哪种正则表达式风格?是PCRE吗?regex的味道是PCRE,是的。香蕉苹果是可能的是的-我不想与任何一行匹配banana@Michelle也许,我不确定。该应用程序用于文本编辑器的XML C++ .LAN文件中的语法突出显示。我想匹配
/
字符,但这破坏了注释结构/
。也许有不同的方法来解决这个问题,但这个问题已经证明是一个相当有趣的学术练习,不管怎样,路线仍然可以包含香蕉:“梨-香蕉-苹果”哎呀,说得好,米歇尔,我没有检查这个组合。现在还不被接受…@anubhava这一次你似乎得到了:D-更多的排列。我会等一会儿再接受,看看有没有人贴柜台-example@Piyuesh不在regex101上,那就过去了fine@anubhava您可以简单地使用静态匹配梨香蕉苹果
.*?banana.*|\b(apple)\b