2016-05-11 184 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编程中的所有接口和对象。