2014-05-01 23 views
0

我试图找到一种方法来从相当长的字符串中使用perl提取仅大写单词(至少三个连续的上部字符,加上数字)。如何使用perl提取长字符串中的大写单词

例子:

"Hello world, thank GOD it's Friday, I can watch EPISODE4" 

输出:

"GOD EPISODE4" 

出于某种原因,我不能拿出一个合理的方式来做到这一点,任何想法?谢谢!

+1

你看这个:http://stackoverflow.com/questions/19200886/extract-uppercase-words-with-optional-numbers-and-underscore-characters? – AntonH

+0

也要求检测数字和减去一个使它有点难... – vonbrand

+0

感谢您的编辑,我有一些错字号码,我只想要提取的数字查询不会改变它。 –

回答

1

使用字符类:

my @matches = ($string =~ /\b[[:upper:]|[:digit:]]{3,}+\b/g); 
say join " - ", @matches; 

(你说大写字符号码。你没有指定号码的位置。你也没有说我是否需要对号码做些什么。

编辑您的问题以包含其他要求)。

+0

谢谢,虽然'说'命令不适合我,也许我有一个旧版本的Perl。 –

+0

你必须添加'use feature qw(say);'到程序的顶部,并且Perl的版本比5.10(大约7岁)更新。 –

0

这将让你任何大写单词是超过300个字符,这可能会或可能不会有在年底的数字:

my $str = "Hello world, thank GOD its Friday, I can watch EPISODE4"; 
my @matches = ($str =~ /\b([A-Z]{3,}+[0-9]*)\b/g); 

您可以修改它来寻找后的数字大写字母:

my @matches = ($str =~ /\b([A-Z]{3,}+[0-9]*[A-Z]*)\b/g); 
相关问题