2016-12-07 47 views
0

我有一個帶有十六進制表示數字的文本文件。這些數字是在16位塊分離或者通過spacenew 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「編輯器,支持正則表達式查找和替換。不幸的是,我的正則表達式知識很差。谷歌搜索也沒有幫助。

回答

4

([0-9a-f]{2})([0-9a-f]{2})替換爲$1 $2

+1

是的。但我對學習正則表達式很感興趣。所以我試圖理解這個表達。我的猜測是,$ 1指定了第一個由()和第二個分別包圍的組。你能否介紹一下正在發生的事情? – Hairi

+1

這是正確的@Hairi。每個組恰好匹配兩個字符 - 由{2}設置,其中每個字符都是括號中的字符(可能的十六進制字符)中的一個。因此,崇高的正則表達式一直在飢餓地尋找第一場比賽,替換是否增加了空間,然後在文本中移動以尋找下一場比賽...... – Dogweather

0

不同的正則表達式庫的工作方式稍有不同。我建議查看regex101.com,在那裏你可以嘗試各種正則表達式,並以清晰的方式查看結果。

這裏是一個可能的起點你:

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

取決於哪個regex庫編輯器的使用,替換可能是$ 1 $ 2 $ 3代替,或查找括號或括號可能需要轉義。

2

您可以使用積極的展望。將(\S{2})(?=\S)替換爲\1