【发布时间】:2015-07-06 21:28:41
【问题描述】:
我有一个包含一些完全大写的单词和一些混合大小写的单词的文件,我想提取完全大写的单词运行(包含在一行中)——也就是说,由\b 分隔并至少包含两个大写字母,没有小写字母。一切都是 7 位的。
所以,例如,如果一行是
The QUICK Brown fox JUMPs OV3R T4E LAZY DoG.
然后我想提取QUICK 和OV3R T4E LAZY。
这是我目前所拥有的:
while (<$fh>) { # file handle
my @array = $_ =~ /\b[^a-z]*[A-Z][^a-z]*[A-Z][^a-z]*\b/;
push @bigarray, @array;
}
还有比[^a-z]*[A-Z][^a-z]*[A-Z][^a-z]*更优雅的方式吗?
【问题讨论】:
-
连续大写,或单词中任意位置的 2+ 个大写。例如
CApital还是cApiTal?连续很容易。 2+ 任何地方,不是那么多。 -
@MarcB 连续。但也包括其他
\w字符,但不包括小写字母。 -
"其他
\w字符,但没有小写字母" - 所以数字和下划线? -
示例匹配/非匹配会有所帮助