正则表达式贪婪范围
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>/
中的内容。
您原来的 AAA/[A-Z]{0,8}/AAA
是正确的,但是您在正则表达式之外的某处设置了 "case insensitive" 正则表达式修饰符,因此您也可以匹配小写字母。 (您是否在 Notepad++ 中勾选了 "Match case" 复选框?)
您可以使用 (?-i)
构造使正则表达式(或表达式的一部分)区分大小写:
(?-i)AAA\/[A-Z]{0,8}\/AAA
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>/
中的内容。
您原来的 AAA/[A-Z]{0,8}/AAA
是正确的,但是您在正则表达式之外的某处设置了 "case insensitive" 正则表达式修饰符,因此您也可以匹配小写字母。 (您是否在 Notepad++ 中勾选了 "Match case" 复选框?)
您可以使用 (?-i)
构造使正则表达式(或表达式的一部分)区分大小写:
(?-i)AAA\/[A-Z]{0,8}\/AAA