0

私はperlを初めて使用し、文字列の特定の部分を一致させるのに問題があります。

私が一致させようとしているのは太字です:

[1339300800]現在のホスト状態:何か;

少なくとも、角かっこの間で文字列を一致させることができました。

($line=~/\[(\d*)\]*/)

太字の部分に次のようなものを試しています。

($line=~/STATE:\s(\S+);/)

誰かアドバイスをいただけますか?

4

3 に答える 3

2

あなたの正規表現

STATE:\s([^;]*);

私のために働きます。グループ1で一致することを忘れないでください

if ($subject =~ m/STATE:\s(\S+);/) {
    $result = $1;
} else {
    $result = "";
}

また、最初の正規表現は少し冗長にすることができます

\[(\d*)]
于 2012-06-15T20:38:49.103 に答える
2

ステートメントが常に。で終わる場合は、次のように記述;できます。

$line =~ /:\s([^;]+)/
于 2012-06-15T20:39:14.570 に答える
1

あなたは近いです:

$line =~ /STATE:\s+([^;]+);/

これにより、セミコロン以外のすべてが取得されます。また、STATEと「何か」の間に複数のスペースがある場合でも一致します

于 2012-06-15T20:39:04.423 に答える