0

パターン マッチング ソリューションを考え出すのに本当に助けが必要です...

文字列が<6>[ 84.982642] Killing the process

それらを 3 つの別々の文字列に抽出するにはどうすればよいですか... 6, 84.982642、およびKilling the process.. には 1 つ必要です。多くのことを試しましたが、これらの大括弧と空白は本当に混乱し、エラー メッセージが表示され続けます。

"WARNING: Use of uninitialized value $bracket in pattern match..."

どうにかしてこのように書くことができる方法はありますか

($num_1, $num_2, $name_process) = split(/[\-,. :;!?()[\]{}]+/);

これらを抽出する方法がわからない..

助けてください?どうもありがとう

4

1 に答える 1

3

入力が$_

($num_1, $num_2, $name_process) = /^<(\d+)>\[([^\]]+)\]\s+(.*)$/;

これは、山括弧内の最初のトークンが常に数字であると想定しています。もう少し一般的な使用のために

($num_1, $num_2, $name_process) = /^<([^>]+)>\[([^\]]+)\]\s+(.*)$/;

説明:

<([^>]+)>- 左山かっこの後に直角かっこではない 1 つまたは複数の文字が続き、その後に直角かっこが続きます。

\[([^\]]+)\]- 左大括弧の後に右大括弧ではない 1 つ以上の文字が続き、その後に右大括弧が続く

\s+(.*)- 1 つ以上のスペース、その後の最初の非空白から始まるすべてをキャプチャします。

于 2013-11-06T01:24:45.810 に答える