簡體   English   中英

Notepad ++正則表達式從起始位置開始每隔n個字符插入一個字符

[英]Notepad++ regex to insert character every nth character from a starting position

如何使用正則表達式插入| 從起始位置到行尾每兩個字符?

在以下示例中使用正則表達式(數據包數據的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

您可以使用

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

並替換為$&|

詳細資料

  • (?:\\G(?!^)|^.{36}) -匹配上一次成功匹配結束時的位置(使用\\G(?!^) )或( | )行的開頭( ^ )以及除換行符( .{36} )以外的前36個字符
  • \\K匹配重置運算符,它丟棄到目前為止匹配的整個文本
  • .. -任何2個字符不是斷行字符等
  • (?!$) -不在字符串末尾。

替換模式僅包含對整個匹配項( $& )的反向引用和| 管道符號(替換模式中的文字符號)。

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM