私はperlを初めて使用し、文字列の特定の部分を一致させるのに問題があります。
私が一致させようとしているのは太字です:
[1339300800]現在のホスト状態:何か;
少なくとも、角かっこの間で文字列を一致させることができました。
($line=~/\[(\d*)\]*/)
太字の部分に次のようなものを試しています。
($line=~/STATE:\s(\S+);/)
誰かアドバイスをいただけますか?
あなたの正規表現
STATE:\s([^;]*);
私のために働きます。グループ1で一致することを忘れないでください
if ($subject =~ m/STATE:\s(\S+);/) {
$result = $1;
} else {
$result = "";
}
また、最初の正規表現は少し冗長にすることができます
\[(\d*)]
ステートメントが常に。で終わる場合は、次のように記述;
できます。
$line =~ /:\s([^;]+)/
あなたは近いです:
$line =~ /STATE:\s+([^;]+);/
これにより、セミコロン以外のすべてが取得されます。また、STATEと「何か」の間に複数のスペースがある場合でも一致します