私は現在、人々の関係を検出するための簡単なスクリプトに取り組んでいます。私は、$ npを適切な名詞の正規表現と定義します。 私の最初の仕事では、目的は、それらの間の単語の数が固定値よりも少ない別の固有名詞の左側に現れるすべての固有名詞を見つけることです。私は、次のコードを書かれている:perlで捕獲されたグループを得る方法
$/ = '';
my $PM = qr{\b[A-Z][\w-]*\w};
my $de = qr{d[aoe]s?};
my $s = qr{[\n ]};
my $np = qr{$PM (?: $s $PM | $s $de $s $PM)*}x;
while(<>){
while(/($np)/g){
print("$1 : ");
my @x = m/(?=(?: $s+ (?: [\w-]+ | ($np))){1,7})/gx;
my $y = join(", ", @x);
print("$y\n");
}
}
私はそれがそれらの各1、ウィンドウ内にある固有名詞のために、ファイル内のすべての固有名詞を印刷しすると予想しました。しかし、これは起こっていません。 私はそれが私が望むように動作させることができますか?
PS:私はperlの初心者だ
EDIT:一部の人々が期待される入力と出力のサンプルを追加することをお勧めします。 私は
John asked Mary to meet Anna.
次のテキストを使用してファイルを持っていた場合、私は私のスクリプトは、現在の状態で、私は無限ループに印刷されたカンマを取得し、しかし
John : Mary, Anna
Mary : Anna
Anna :
を印刷したいと思います。
質問を入力して入力してください。あなたが話しているファイルが役に立つでしょう。 – simbabque
また、すでに '/ x'修飾子を使用しています。これは素晴らしい方法です。しかし、物事の間に単一のスペースを置くのではなく、正しく字下げしてコメントを追加するのはなぜですか?そうすれば、私たちのために、そしてあなたの未来の自己(おそらく既に明日、パターンを見て)のために読むことがより簡単になります。 – simbabque