正则表达式贪婪范围



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个大写字母的字符串(即在正斜杠之间)?

I tried regex : AAA/(?!(.*[a-z].*)[A-Z]{0,8})/AAA

但是它不匹配上面的任何字符串。
(Regex AAA/[A-Z]{0,8}/AAA确实匹配上面的字符串,但它也匹配小写字母。ex: AAA/bb/AAA)

您的原始AAA/[A-Z]{0,8}/AAA是正确的,但是您已经在regex之外的某个地方设置了"不区分大小写"的regex修饰符,因此您也可以匹配小写字母。(你是否在notepad++中勾选了"匹配大小写"复选框?)

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

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

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

你可以这样做:

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

现在匹配的1组将得到两个/中的内容。

演示

最新更新