请帮助优化此正则表达式

时间:2016-03-20 12:17:53

标签: regex capture-group

输入:

+ 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

1 个答案:

答案 0 :(得分:0)

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

表达式:

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

替换:

$1\t$2\t$3

也许你必须使用/ m(Multiline)和/ s(dot匹配任何char)开关。

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);
?>