Regex 正则表达式模式匹配与提取
我正在尝试编写一个perl正则表达式来提取冒号后面大于2个字母的单词:。例如,如果模式是subject:我将要编写一个正则表达式。我只需要在$variable>2个字母的单词si.e中提取,$variable=“subject:about write regex” 这是我的程序,其中正则表达式和模式匹配已完成,但当我打印时,我的变量为空。我做错了什么Regex 正则表达式模式匹配与提取,regex,perl,Regex,Perl,我正在尝试编写一个perl正则表达式来提取冒号后面大于2个字母的单词:。例如,如果模式是subject:我将要编写一个正则表达式。我只需要在$variable>2个字母的单词si.e中提取,$variable=“subject:about write regex” 这是我的程序,其中正则表达式和模式匹配已完成,但当我打印时,我的变量为空。我做错了什么 #!/usr/bin/perl while (<STDIN>) { foreach my $query_part (s
#!/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);
#/usr/bin/perl
而(){
对于每个我的$query\u部分(拆分(/\s+/,$)){
我的($query\u part\u subject)=$query\u part=~/([^\w\\.]+)(((?:\w{3,}\124;[\$\@()+)+)(?:(\ w{3,}.+))?/;
打印“查询部分:$query\u part\u subject\n”;
}
}
出口(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";
}
尝试这样做:
#!/usr/bin/perl
use strict; use warnings;
while (<DATA>) {
s/.*?://;
print join "\n", grep { length($_) > 2 } split;
__DATA__
subject:a bb ccc dddd fffff
注意
- 根据我对您问题的理解:我只在
字符后显示单词长度>2个字符:
主题:我即将编写正则表达式
您想要输出主题:关于编写正则表达式
。你想去掉“我是”、“我是”和“a”?如果不是,我怀疑是这样的,你的问题描述得很糟糕,你的例子更糟。这不是和你昨天问的问题很相似吗?是的,我想要所有大于2个字母的单词。@sputnick它怎么比grep{length($)>2}split更好?
ccc
dddd
fffff