2016-05-11 237 views
-1

因爲我現在正在使用Windows註冊表..我總是會發現以下模式..註冊表中包含兩個括號{},其中包含數字和字母,您可以在下面看到一些示例:刪除括號內的任何內容

HKEY_CLASSES_ROOT\Drive\shellex\FolderExtensions\{fbeb8a05-beee-4442-804e-409d6c4515e9} 

HKEY_CLASSES_ROOT\CLSID\{00BB2763-6A77-11D0-A535-00C04FD7D062}\InProcServer32 

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2\CPC\Volume\{64dcb6fa-03c9-11e6-9e9f-806d6172696f}\ 

誰能幫助我理解是什麼,這些是指什麼?他們是隨機生成的嗎?

我也試圖解析每個註冊表項和任何括號{}之間移除..作爲一個開始,我知道這可以用正則表達式來完成,但我真的不熟悉它們..任何指導讚賞。

+0

很好的問題,你應得的我upvote – Veltro

+1

這些是CLSID(〜UUID),Windows使用它們來標識COM對象的類和接口。 – L3viathan

回答

0

當你標記Python問題(與2.7測試):

import re 

string = """ 
HKEY_CLASSES_ROOT\Drive\shellex\FolderExtensions\{fbeb8a05-beee-4442-804e-409d6c4515e9} 
HKEY_CLASSES_ROOT\CLSID\{00BB2763-6A77-11D0-A535-00C04FD7D062}\InProcServer32 
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2\CPC\Volume\{64dcb6fa-03c9-11e6-9e9f-806d6172696f} 
""" 

rx = r'\{[^}]+\}\\?' 
string = re.sub(rx, '', string) 
print string 

的片段讓你不用花括號所有按鍵。感謝@Liam以前指出錯誤。
提示:我是Mac用戶,但是,我敢肯定一定程度上是必要的括號,是不是?

+0

這段代碼不像你認爲的那樣工作 – Veltro

+0

@Liam:我爲什麼不呢? – Jan

+0

有時它會輸出一個雙反斜槓('HKEY_CLASSES_ROOT \ CLSID \\ InProcServer32') – Veltro

0

正則表達式是在這種情況下最適合的。只需使用:

import re 
string = 'HKEY_CLASSES_ROOT\CLSID\{00BB2763-6A77-11D0-A535-00C04FD7D062}\InProcServer32' 
string = re.sub('{(.+)}', '', string) 
0

你試過類似的東西嗎?

string = "HKEY_CLASSES_ROOT\CLSID\{00BB2763-6A77-11D0-A535-00C04FD7D062}\InProcServer32" 

cleared_string = string[:string.index("{")+1]+string[string.index("}"):] 

print cleared_string 
+0

這不起作用。它顯示除了想要的字符串以外的所有內容改爲>>> >>> cleared_string = string [string.index(「{」)+ 1:string.index(「}」)] ' –

1

替換{.*?}{}(懶惰點的情況下,在一行中2個GUIDS)

demo

字符串是Globally Unique Identifiers。從here

GUID(或UUID)爲 '全局唯一標識符'(或 '通用唯一標識符')的縮寫。它是一個128位整數,用於標識資源,用於 。術語GUID一般是用開發商 與微軟的技術合作,同時UUID是用來到處 人。

128位足夠大並且生成算法足夠獨特 如果每年產生1,000,000,000個GUID一年,重複的概率將只有50%。或者,如果地球上的每個人都生成了600,000,000個GUID,則只有50%的重複概率。

GUID用於C#,Java和C++ 的企業軟件開發中,作爲數據庫密鑰,組件標識符或幾乎任何需要真正唯一標識符的地方。 GUID還用於識別COM編程中的所有接口和對象。