包括“ Somestring”,但排除那些包含“ Otherstring”的

时间:2019-07-12 18:03:27

标签: regex

我正在读this帖子,内容是排除具有给定字符串的情况。

那里选择的答案使用^((?!hede).)*$排除字符串'hede'。

我有如下字符串:

apples_IOS_QA
apples_Android_QA
oranges
bananas
banannas_QA
apples_Android
apples_IOS
QA_apples_IOS // note sometimes 'QA' is at the beginning of the string

我想返回非质量检查版本的苹果。

尝试过(在Presto SQl查询中):

and regexp_like(game_name, '^((?!QA).*$^apples.*)')

没有结果返回

然后尝试:

and regexp_like(game_name, '^apples.*(!?QA)')

这会运行并返回苹果,但只有在实际上我想排除这些结果时,才能给我QA结果。

然后尝试:

and regexp_like(game_name, '^apples.*[^(QA)]')

这仅返回apples结果,但其中包含字符串“ QA”的结果。

我该如何正则表达式过滤器包括“ apples”,但排除所有包含子字符串“ QA”的情况?

1 个答案:

答案 0 :(得分:2)

您可以使用基于前瞻的正则表达式:

^(?!.*QA).*apples.*$

(?!.*QA)是该条件的先行断言,因为该条件在^之前有.*,因此该条件应用于整个字符串。