0

我真的需要帮助来提出模式匹配解决方案......

如果字符串是<6>[ 84.982642] Killing the process

如何将它们提取到三个单独的字符串中...我需要一个 for6, 84.982642Killing the process.. 我已经尝试了很多东西,但是这些括号和空格真的让我感到困惑,我不断收到错误消息

"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+(.*)$/;

解释:

<([^>]+)>- 一个左尖括号后跟一个或多个不是右尖括号的字符,然后是一个右尖括号。

\[([^\]]+)\]- 一个左括号,后跟一个或多个不是右括号的字符,然后是一个右括号

\s+(.*)- 一个或多个空格,然后从第一个非空格开始捕获所有内容。

于 2013-11-06T01:24:45.810 回答