首页 > 解决方案 > 包括 'Somestring' 但不包括那些包含 'Otherstring'

问题描述

我正在阅读这篇关于排除给定字符串的案例的帖子。

那里选择的答案^((?!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

我想退回非 QA 版本的苹果。

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

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

没有返回结果

然后尝试:

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

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

然后尝试:

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

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

如何进行正则表达式过滤以包含“apples”但排除任何包含子字符串“QA”的案例?

标签: regex

解决方案


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

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

(?!.*QA)是需要放置^在该条件旁边的前瞻断言应用于整个字符串,因为它具有.*before QA


推荐阅读