正则表达式贪婪的范围

Din*_*han 0 regex notepad++ regex-greedy regex-lookarounds

String to be matched = "AAA/up to eight upper case letters/AAA" : ex1 : AAA/BB/AAA ex2 : AAA//AAA ex3: AAA/BBCCDDEEFF/AAA

如何在中间匹配字符串为0到8个大写字母(即正斜杠之间)?

我试过了 regex : AAA/(?!(.*[a-z].*)[A-Z]{0,8})/AAA

但它与上述任何字符串都不匹配.
(正则表达式AAA/[A-Z]{0,8}/AAA匹配上面的字符串,但它也匹配小写字母. ex: AAA/bb/AAA)

Dmi*_*rov 6

你的原文AAA/[A-Z]{0,8}/AAA是正确的,但你在正则表达式之外的某处设置了"不区分大小写"的正则表达式修饰符,所以你也匹配小写字母.(您是否在Notepad ++中选中"匹配大小写"复选框?)

您可以使用(?-i)构造使正则表达式(或表达式的一部分)区分大小写:

(?-i)AAA\/[A-Z]{0,8}\/AAA
Run Code Online (Sandbox Code Playgroud)

演示:https://regex101.com/r/aS2iW8/1