1

このような正規表現を使用して、複数行の入力でキーワードを探しています。

if($input =~ /line/mi)
{
    # further processing
}

入力変数のデータは次のようになります。

this is
multi line text
to be matched
using perl

コードは機能し、キーワードと正しく一致します。ただし、パターンが一致した行 (「複数行テキスト」) も取得し、それを変数に格納してさらに処理したいと考えています。どうすればいいですか?

助けてくれてありがとう。

4

4 に答える 4

3

行を配列にgrepできます。これは、条件としても機能します。

my @match = grep /line/mi, split /\n/, $input;
if (@match) {
    # ... processing
}
于 2013-08-12T10:11:11.620 に答える
0

TLPの答えの方が優れていますが、次のことができます:

if ($input =~ /([^\n]+line[^\n]+)/i) {
    $line = $1;
}
于 2013-08-12T10:21:23.210 に答える
0

あなたは彼を試しましたか?これは私にとってはうまくいきます。$1 は内部の正規表現のキャプチャを表し、 1 つの行に 1 つの一致しかない場合に提供されます。複数の行に一致がある場合は、最初の行のみがキャプチャされます()

if($var=~/(.*line.*)/)
{
print $1
}

文字列行を含むすべての行をキャプチャする場合は、以下を使用します。

my @a;
push @a,$var=~m/(.*line.*)/g;
print "@a";
于 2013-08-12T10:31:08.337 に答える