有趣的容易看起来正则表达式

mah*_*ery 0 regex

我正在重新措辞我的问题,以清除混乱!

我希望匹配如果一个字符串有特定的字母,我使用字符类:

[ACD]
Run Code Online (Sandbox Code Playgroud)

它完美无缺!

但如果字符串有两次或多次重复或两个单独的字母,我想匹配

例如: [AKL]应匹配:

ABCVL
AAGHF
KKUI
AKL
Run Code Online (Sandbox Code Playgroud)

但上述内容不应与以下内容相符:

ABCD
KHID
LOVE
Run Code Online (Sandbox Code Playgroud)

因为那些只有一次!

这就是我试图使用的原因:

[ACD]{2,}
Run Code Online (Sandbox Code Playgroud)

但它不起作用,可能它不是正确的正则表达式..正如一个正则表达式大师可以帮我解决这个难题吗?

谢谢

PS:我会在MYSQL上使用它 - 一种不同的方法也欢迎!但我喜欢使用正则表达式来实现更智能和更短的查询!

Cas*_*yte 5

要确保字符串在一组字母中包含至少两个出现的位置( A K L例如,如示例所示),您可以编写如下内容:

[AKL].*[AKL]
Run Code Online (Sandbox Code Playgroud)

由于MySQL正则表达式引擎是一个DFA,因此不需要使用否定的字符类[^AKL]来代替点来避免回溯,或者根本不需要使用延迟量词.

例:

SELECT 'KKUI' REGEXP '[AKL].*[AKL]';
Run Code Online (Sandbox Code Playgroud)

将返回 1

您可以按照此链接说明LIKE的特定主题和MySQL中的REGEXP功能.