我试图找到一种方法来从相当长的字符串中使用perl提取仅大写单词(至少三个连续的上部字符,加上数字)。如何使用perl提取长字符串中的大写单词
例子:
"Hello world, thank GOD it's Friday, I can watch EPISODE4"
输出:
"GOD EPISODE4"
出于某种原因,我不能拿出一个合理的方式来做到这一点,任何想法?谢谢!
我试图找到一种方法来从相当长的字符串中使用perl提取仅大写单词(至少三个连续的上部字符,加上数字)。如何使用perl提取长字符串中的大写单词
例子:
"Hello world, thank GOD it's Friday, I can watch EPISODE4"
输出:
"GOD EPISODE4"
出于某种原因,我不能拿出一个合理的方式来做到这一点,任何想法?谢谢!
使用字符类:
my @matches = ($string =~ /\b[[:upper:]|[:digit:]]{3,}+\b/g);
say join " - ", @matches;
(你说大写字符和号码。你没有指定号码的位置。你也没有说我是否需要对号码做些什么。
编辑您的问题以包含其他要求)。
谢谢,虽然'说'命令不适合我,也许我有一个旧版本的Perl。 –
你必须添加'use feature qw(say);'到程序的顶部,并且Perl的版本比5.10(大约7岁)更新。 –
这将让你任何大写单词是超过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);
你看这个:http://stackoverflow.com/questions/19200886/extract-uppercase-words-with-optional-numbers-and-underscore-characters? – AntonH
也要求检测数字和减去一个使它有点难... – vonbrand
感谢您的编辑,我有一些错字号码,我只想要提取的数字查询不会改变它。 –