-2

コロンの後に2文字を超える単語を抽出するためにperl正規表現を書き込もうとしています:。たとえば、パターンが件名の場合:正規表現を作成しようとしています。$ variableで2文字以上の単語のみを抽出する必要があります。つまり、$ variable = "subject:aboutwriteregex"です。

これが正規表現とパターンマッチングが行われる私のプログラムですが、印刷すると変数が空になります。私は何が間違っているのですか?

#!/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);
4

2 に答える 2

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文字を超える単語の長さだけを表示します:
于 2012-11-13T21:32:00.780 に答える
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";
}
于 2012-11-13T21:15:02.197 に答える