我正在使用Python和正则表达式解析SDDL。SDDL的格式始终为“type:some text”,最多重复4次。类型可以是'O'、'G'、'D'或'S',后跟一个冒号。'some text'的长度可变。
以下是一个示例SDDL:
以下是一个示例SDDL:
O:DAG:S-1-5-21-2021943911-1813009066-4215039422-1735D:(D;;0xf0007;;;AN)(D;;0xf0007;;;BG)S:NO_ACCESS_CONTROL
目前为止,我已经有了以下内容。其中两个元组能够正常返回,但另外两个元组——('G', 'S-1-5-21-2021943911-1813009066-4215039422-1735') 和 ('S', 'NO_ACCESS_CONTROL') 则不能。
import re
sddl="O:DAG:S-1-5-21-2021943911-1813009066-4215039422-1735D:(D;;0xf0007;;;AN)(D;;0xf0007;;;BG)S:NO_ACCESS_CONTROL"
matches = re.findall('(.):(.*?).:',sddl)
print matches
[('O', 'DA'), ('D', '(D;;0xf0007;;;AN)(D;;0xf0007;;;BG)')]
what I'd like to have returned is
[('O', 'DA'), ('G','S-1-5-21-2021943911-1813009066-4215039422-1735'), ('D', '(D;;0xf0007;;;AN)(D;;0xf0007;;;BG)'),('S','NO_ACCESS_CONTROL')]
([OGDS]):(.*?)(?=[OGDS]:|$)
- Jonathon Reinhart