正则表达式贪婪范围

Regex greedy range

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

如何匹配中间有零到八个大写字母(即正斜杠之间)的字符串?

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

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

你可以这样做:

^A{3}/([A-Z]{0,8})/A{3}$

现在匹配组 </code> 会为您提供两个 <code>/ 中的内容。

Demo

您原来的 AAA/[A-Z]{0,8}/AAA 是正确的,但是您在正则表达式之外的某处设置了 "case insensitive" 正则表达式修饰符,因此您也可以匹配小写字母。 (您是否在 Notepad++ 中勾选了 "Match case" 复选框?)

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

(?-i)AAA\/[A-Z]{0,8}\/AAA

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