Notepad ++正则表达式从起始位置

时间:2016-11-09 21:43:00

标签: regex notepad++

如何使用正则表达式插入|从起始位置到行尾的每两个字符?

在以下示例中使用正则表达式(包数据的tshark输出),正则表达式插入|在前两个字符和后两个字符之后,但不将该模式应用于其余行。我认为问题在于第二组的重复模式(或缺乏)。

样品:

1478646603.255173000    10.10.10.1  0000000000000000000000

^(.{34})(..) replace with \1|\2|   OR   ^(.{34})(.*?(..)) replace with \1|\2

产生这个:

1478646603.255173000    10.10.10.1  00|00|000000000000000000

我想要的是:

1478646603.255173000    10.10.10.1  00|00|00|00|00|00|00|00|00|00|00

1 个答案:

答案 0 :(得分:2)

您可以使用

(?:\G(?!^)|^.{36})\K..(?!$)

并替换为$&|

<强>详情:

  • (?:\G(?!^)|^.{36}) - 匹配上一次成功匹配(使用\G(?!^))或(|)行开头的位置(^)和除了换行符(.{36}
  • 之外的前36个字符
  • \K - 丢弃到目前为止匹配的整个文本的匹配重置运算符
  • .. - 除了换行符之外的任何2个字符
  • (?!$) - 不在字符串的末尾。

替换模式仅包含对整个匹配($&)和|管道符号(替换模式中的文字符号)的反向引用。

enter image description here