re正则在python中的简单实用

python:2.7.3

platform:windows


最近公司需要做个分析,从冗长的错误日志中分析并且分离出同类的错误然后分别提交.

于是第一次接触python.然后就喜欢上了...


日志大概长这样.

20160101-190115[I]: [Lua]Role:19125 [ClientErrorMsg] [string "src/ui/office/KUIOfficeMainLayer.luac"]:0: attempt to index field '_mainLayout' (a nil value)  [C]:129
stack:
	[string "src/main.luac"]: in function '__index'
	[string "src/ui/office/KUIOfficeMainLayer.luac"]: in function ''
	[string "src/ui/office/KUIOfficeMainLayer.luac"]: in main chunk
	[string "src/logic/KEventDispatchCenter.luac"]: in function 'dispatchEvent'
	[string "src/logic/KPlayer.luac"]: in main chunk
	[C]: in function 'xpcall'
	[string "src/network/KGameServer_v2.luac"]: in main chunk
	[string "src/network/KGameServer_v2.luac"]: in function 'OnRecvPackage'
20160101-101537[I]: [Lua]Role:13603 [ClientErrorMsg] [string "lib/string.luac"]:0: assertion failed!  [C]:29
stack:
	[string "src/main.luac"]: in main chunk
	[C]: in function 'assert'
	[string "lib/string.luac"]: in function 'split'
	[string "src/ui/guide/KUIGuideDialogueNode.luac"]: in function 'refreshDialogue'
	[string "src/ui/guide/KUIGuideDialogueNode.luac"]: in main chunk
	[string "src/ui/guide/KUIGuideDialogueNode.luac"]: in function 'refreshUI'
	[string "src/ui/uibase/KUINodeBase.luac"]: in function 'autoHandler'
	[string "src/ui/uibase/KUINodeBase.luac"]: in function 'init'
	[string "src/ui/g
20160101-160554[I]: [Lua]Role:17096 [ClientErrorMsg] [string "src/ui/office/factory/KUIFactoryGearMultiChoo..."]:0: attempt to index global 'scrollControl' (a nil value)  [C]:26
stack:
	[string "src/main.luac"]: in function '__index'
	[string "src/ui/office/factory/KUIFactoryGearMultiChoo..."]: in main chunk
	[string "src/logic/KEventDispatchCenter.luac"]: in function 'dispatchEvent'
	[string "src/logic/KPlayer.luac"]: in main chunk
	[C]: in function 'xpcall'
	[string "src/network/KGameServer_v2.luac"]: in main chunk
	[string "src/network/KGameServer_v2.luac"]: in function 'OnRecvPackage'
	[string "lib/tcp_client_v2.luac"]: in main chunk

观察了一阵子觉得首先应该把他们截断.于是正则就派上用场了.

由于反斜杠会引起排版错误。就贴图了。


通过 这个 去筛选分割.可以分割所有类似上文中类似20160101-160554[I]的字符串并且分别存储到values和devides中后面再去二次分析.


之后做工具的时候又遇见一个需求.

要实现正则查找一个字符串.该字符串是符合某个规则的字符串的子字符串.

一开始不知道有分组这一回事.只能分次去查找.

譬如

 <Size X="1280.0000" Y="720.0000" />
                <PrePosition X="0.0000" Y="0.0000" />
                <PreSize X="0.0000" Y="0.0000" />
                <FileData Type="Normal" Path="ui_material/battle/zd_background.png" />
在类似的字符串中查找ui_material/battle/zd_background.png这个子字符串.

如果不使用分组的话.我必须先这样re.search(r'<FileData.*>', str).去定位到那一行.再在结果中二次查找.

后来问了我师傅他告诉我有分组这一回事..于是乎事情就简单了..

re.search(r'Path=\"(.*)\" />', str)

完美解决...


未完待续..

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值