2016-05-11 2 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

Хороший вопрос, вы заслужили мое возвышение – 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: I почему бы и нет? – Jan

+0

иногда выводит двойную обратную косую черту ('HKEY_CLASSES_ROOT \ CLSID \\ InProcServer32') – Veltro

0

Regex - лучшее место в этом случае. Просто используйте:

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

заменить {.*?} с {} (ленивой точкой в ​​случае два Guids на одной линии)

demo

Струна Globally Unique Identifiers. от here:

GUID (или UUID) является аббревиатурой 'глобально уникальный идентификатор (' или ' универсального уникального идентификатора'). Для определения ресурсов используется 128-разрядное целое число . Термин GUID обычно используется разработчиками , работающими с технологиями Microsoft, а UUID используется везде .

128-бит достаточно большой, и алгоритм генерации достаточно уникален , что если 1 000 000 000 GUID в секунду были сгенерированы в течение 1 года, вероятность дублирования будет равна только 50%. Или, если каждый человек на землях сгенерировал 600 000 000 идентификаторов GUID, то вероятность того, что дубликат будет равна 50% .

GUIDs используются в разработке корпоративного программного обеспечения в C#, Java и C++ как ключи базы данных, идентификаторы компонентов или только где-либо еще действительно уникальный идентификатор не требуется. GUID также используются для идентификации всех интерфейсов и объектов в программировании COM.

Смежные вопросы