2016-12-07 21 views
0

16進数のテキストファイルがあります。これらの数字は、このような16ビットチャンクでspaceまたはnew lineのいずれかによって分離されています[0-9] [A-F] [a-f]

1822 0000 da12 
0030 0110 0030 

私は再びグループでそれらをしたいが、このような8ビットの塊で:

18 22 00 00 da 12 
00 30 01 10 00 30 

私は「崇高テキストを使用します3 "エディタで、正規表現の検索と置換をサポートしています。残念ながら、私の正規表現の知識はかなり悪いです。 Googleの検索でも役に立ちませんでした。

答えて

4

([0-9a-f]{2})([0-9a-f]{2})$1 $2に置き換えます。

+1

はい、動作します。しかし、私は正規表現を学ぶことに興味があります。そこで私はこの表現を理解しようとしていました。私の推測では、$ 1は()と$ 2で囲まれた最初のグループをそれぞれ指定しています。あなたは何が起こっているかについていくつかの光を当ててください。 – Hairi

+1

それは正しい@Hairiです。それぞれのグループは '{2}'で設定された2文字に正確にマッチします。各文字は角括弧内の文字の1つです(可能な16進文字)。そして、崇高な正規表現は最初の試合を飢えて検索し、スペースを追加する置換えをして、次の試合を探してテキストを移動します... – Dogweather

0

さまざまな正規表現ライブラリが少し違って動作します。 regex101.comをチェックして、さまざまな正規表現を試して、結果を明確な方法で確認することをおすすめします。ここで

はあなたのための可能な出発点です:エディタの使い方正規表現ライブラリかに応じ

find: ([0-9a-f][0-9a-f])([0-9a-f][0-9a-f]) (... 
replace: \1 \2 \3 \4 

、置き換える$ではなく1 $ 2 $ 3、または検索括弧や括弧をエスケープする必要があるかもしれないかもしれません。

2

肯定的な先を使うことができます。 (\S{2})(?=\S)\1 に置き換えます。

関連する問題