0

输入:

+ 1220     001d.a16a.9400    dynamic   0          F    F  Po10
* 1220     0021.f60f.4127    dynamic   0          F    F  Eth1/46

表达:

\S+\s+(\d+)\s+([0-9A-Fa-f]{4}[.][0-9A-Fa-f]{4}[.][0-9A-Fa-f]{4})\s+\w+\s+\d+\s+\w+\s+\w+\s+(.*)

代替:

$1\t$2\t$3

输出:

1220    001d.a16a.9400  Po10
1220    0021.f60f.4127  Eth1/46
4

1 回答 1

0

如果你的意思是通过“优化”缩短,试试这个:

表达:

^.+?(\d+)\s+([^\s]+?)\s.+?([^\s]+)$

代替:

$1\t$2\t$3

也许您必须使用 /m(多行)和 /s(点匹配任何字符)开关。

PHP-示例:

<?php
  $sourcestring="+ 1220     001d.a16a.9400    dynamic   0          F    F  Po10";
  echo preg_replace('/^.+?(\d+)\s+([^\s]+?)\s.+?([^\s]+)$/ms','$1\t$2\t$3',$sourcestring);
?>
于 2016-03-20T13:39:10.993 回答