正则表达式查找在perl中包含至少两个大写字母的字符串
答
为什么坚持只ASCII字母?
这将匹配任何语言的两个大写字母使用Unicode character properties。
/\p{Lu}.*\p{Lu}/
\p{Lu}
是Unicode character property匹配具有小写变体
又见perlretut: More on characters, strings, and character classes
小测试大写字母:
my @input = ("foobar", "Foobar", "FooBar", "FÖobar", "fÖobÁr");
foreach my $item (@input) {
if ($item =~ /\p{Lu}.*\p{Lu}/) {
print $item . " has at least 2 uppercase!\n"
} else {
print $item . " has less than 2 uppercase!\n"
}
}
输出:
foobar有不到2个大写!
Foobar有不到2个大写!
FooBar至少有2个大写字母!
FÖobar至少有2个大写!
fÖobÁr至少有2个大写!
答
尝试使用这样的:
/^.*[A-Z].*[A-Z].*$/
答
不知道到底你需要什么:
perl -lane 'for(@F){if(/[A-Z]/){$count++ for m/[A-Z]/g}if($count >=2){print $_};$count=0}'
测试下方
> echo "ABC DEf Ghi" | perl -lane 'for(@F){if(/[A-Z]/){$count++ for m/[A-Z]/g}if($count >=2){print $_};$count=0}'
ABC
DEf
你申请的任何努力? – 2013-02-28 06:25:19
@Krishna:那不符合'AaaaaB'。 – Blender 2013-02-28 06:27:03
是的。进行更改。 – 2013-02-28 06:30:09