我正在尝试编写一个perl正则表达式,以便在冒号后提取大于2个字母的单词:。例如,如果模式是主题:我即将编写正则表达式。我需要在$ variable中提取> 2个字母单词,$ variable =“subject:about write regex”。
这是我的程序,正则表达式和模式匹配完成,但是当我打印时,我的变量是空的。我做错了什么?
#!/usr/bin/perl
while (<STDIN>) {
foreach my $query_part (split(/\s+/, $_)) {
my($query_part_subject) = $query_part =~ /([^\w\@\.]+)?((?:\w{3,}|[\$\@()+.])+)(?::(\w{3,}.+))?/ ;
print "query_part : $query_part_subject \n";
}
}
exit(0);
答案 0 :(得分:1)
尝试这样做:
#!/usr/bin/perl
use strict; use warnings;
while (<DATA>) {
s/.*?://;
print join "\n", grep { length($_) > 2 } split;
__DATA__
subject:a bb ccc dddd fffff
<强>输出强>
ccc
dddd
fffff
注意强>
:
字符后面的2个字符。答案 1 :(得分:0)
您的问题并不清楚。这是你在找什么?
$txt='I am about to create regex';
$x='(I)';
$y='.*?';
$z='(am)';
$re1=$x.$y.$z;
if ($txt =~ m/$re1/is)
{
$var1=$1;
$word1=$2;
print "($var1) ($word1) \n";
}