我真的需要帮助来提出模式匹配解决方案......
如果字符串是<6>[ 84.982642] Killing the process
如何将它们分成三个单独的字符串...
我需要一个6, 84.982642
和Killing the process
..
我尝试过很多东西,但是这些括号和空格确实令我感到困惑,而且我一直收到错误信息
"WARNING: Use of uninitialized value $bracket in pattern match..."
无论如何我可以用这种方式写作
($num_1, $num_2, $name_process) = split(/[\-,. :;!?()[\]{}]+/);
不确定如何提取这些..
请帮帮忙? 非常感谢你
答案 0 :(得分:3)
假设输入在$_
($num_1, $num_2, $name_process) = /^<(\d+)>\[([^\]]+)\]\s+(.*)$/;
这假定尖括号中的第一个标记始终是数字。为了更多的一般性使用
($num_1, $num_2, $name_process) = /^<([^>]+)>\[([^\]]+)\]\s+(.*)$/;
说明:
<([^>]+)>
- 一个左角括号,后跟一个或多个不是直角括号的字符,后跟一个直角括号。
\[([^\]]+)\]
- 左括号后跟一个或多个不是右括号的字符,后跟右括号
\s+(.*)
- 一个或多个空格,然后捕获从第一个非空白开始的所有内容。