正则表达式的贪婪范围

正则表达式的贪婪范围

问题描述:

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

+1

添加Notepad ++标记,这非常重要。 –

您的原始AAA/[A-Z]{0,8}/AAA是正确的,但你得到了“不区分大小写”正则表达式修饰符设置某个正则表达式外面,所以你匹配小写字母以及。 (你检查“区分大小写”在记事本复选框++?)

您可以将正则表达式(或表达式的一部分)的情况下与(?-i)结构敏感:

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

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

+0

是的!这是问题。谢谢 – Dinushan

你可以这样做:

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

现在匹配组\1会让你有什么内部的两个/秒。

Demo

+0

嗯..由于某种原因这匹配字符串像“AAA/BB/AAA”(至少在记事本+ +) – Dinushan

+0

没有这个正则表达式不能匹配AAA/Bb/AAA' – anubhava

+0

@anubhava在某些情况下,它可以。例如。当不区分大小写模式打开时。 –