正则表达式贪婪的范围

时间:2016-08-23 10:27:47

标签: regex notepad++ regex-lookarounds regex-greedy

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

2 个答案:

答案 0 :(得分:6)

您原来的AAA/[A-Z]{0,8}/AAA是正确的,但您已经对#34;不区分大小写"正则表达式修饰符设置在正则表达式之外的某处,所以你也匹配小写字母。 (您是否在“Notepad ++”中选中了“#34;匹配案例"复选框?”

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

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

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

答案 1 :(得分:1)

你可以这样做:

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

现在匹配的群组\1可以让您了解两个/内的内容。

Demo