【发布时间】:2013-03-06 13:31:55
【问题描述】:
我正在尝试使用正则表达式 (import re) 从日志文件中提取我想要的信息。
更新:添加了破坏所有示例代码的 C:\WINDOWS\security 文件夹权限。
说日志的格式是:
C:\:
BUILTIN\Administrators Allowed: Full Control
NT AUTHORITY\SYSTEM Allowed: Full Control
BUILTIN\Users Allowed: Read & Execute
BUILTIN\Users Allowed: Special Permissions:
Create Folders
BUILTIN\Users Allowed: Special Permissions:
Create Files
\Everyone Allowed: Read & Execute
(No auditing)
C:\WINDOWS\system32:
BUILTIN\Users Allowed: Read & Execute
BUILTIN\Power Users Allowed: Modify
BUILTIN\Power Users Allowed: Special Permissions:
Delete
BUILTIN\Administrators Allowed: Full Control
NT AUTHORITY\SYSTEM Allowed: Full Control
(No auditing)
C:\WINDOWS\system32\config:
BUILTIN\Users Allowed: Read & Execute
BUILTIN\Power Users Allowed: Read & Execute
BUILTIN\Administrators Allowed: Full Control
NT AUTHORITY\SYSTEM Allowed: Full Control
(No auditing)
C:\WINDOWS\security:
BUILTIN\Users Allowed: Special Permissions:
Traverse Folder
Read Attributes
Read Permissions
BUILTIN\Power Users Allowed: Special Permissions:
Traverse Folder
Read Attributes
Read Permissions
BUILTIN\Administrators Allowed: Full Control
NT AUTHORITY\SYSTEM Allowed: Full Control
(No auditing)
并且它对其他几个目录重复。如何将它们拆分为paragraphs,然后检查包含Special Permissions: 的行?
像这样:
- 将整个字符串 1 分成几个部分,
C:\和C:\WINDOWS\system32。 - 查看包含“特殊权限:”的每一行
- 显示整行,例如:
C:\:BUILTIN\Users Allowed: Special Permissions: \n\Create Folders\n\BUILTIN\Users Allowed: Special Permissions: \n\Create Files\n\ - 下一个“段落”重复
我在想:
1. 在整个文本文件中搜索r"(\w+:\\)(\w+\\?)*:" - 将路径返回给我
2.字符串函数或正则表达式来获取其余的输出
3.删除除Special Permissions之外的所有其他行
4. 显示并重复步骤 1
但我觉得效率不高。
有人可以指导我吗?谢谢。
示例输出:
C:\:
BUILTIN\Users Allowed: Special Permissions:
Create Folders
BUILTIN\Users Allowed: Special Permissions:
Create Files
C:\WINDOWS\system32:
BUILTIN\Power Users Allowed: Special Permissions:
Delete
C:\WINDOWS\security:
BUILTIN\Users Allowed: Special Permissions:
Traverse Folder
Read Attributes
Read Permissions
BUILTIN\Power Users Allowed: Special Permissions:
Traverse Folder
Read Attributes
Read Permissions
C:\WINDOWS\system32\config 不显示,因为行中没有特殊权限。
我正在使用的模板:
import re
text = ""
def main():
f = open('DirectoryPermissions.xls', 'r')
global text
for line in f:
text = text + line
f.close
print text
def regex():
global text
<insert code here>
if __name__ == '__main__':
main()
regex()
【问题讨论】:
-
使用
re模块,而不是regex。另外,请查看三引号字符串。 -
最后要什么数据?
-
@nmichaels,大声笑我会编辑,我正在使用
import re@MattH - 显示每个路径中包含Special Permissions:的完整行 -
您应该做的第一件事是使用 file.readline() 或 file.readlines() 逐行工作。您无需使用正则表达式即可找到开始部分和条目的行。