Perl模式匹配提取内部括号

时间:2013-11-06 01:18:42

标签: perl pattern-matching matching brackets

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

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

如何将它们分成三个单独的字符串... 我需要一个6, 84.982642Killing the process .. 我尝试过很多东西,但是这些括号和空格确实令我感到困惑,而且我一直收到错误信息

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

无论如何我可以用这种方式写作

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

不确定如何提取这些..

请帮帮忙? 非常感谢你

1 个答案:

答案 0 :(得分:3)

假设输入在$_

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

这假定尖括号中的第一个标记始终是数字。为了更多的一般性使用

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

说明:

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

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

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