为了分析日志文件,我需要使用python和正则表达式提取异常类型。
异常类型始终包含子字符串“exception”。
问题是子字符串“Exception”并不总是在其名称的末尾。
此外,异常类型由未知数量的点组成。
预期行为:
输入
“08-01-2021:存在System.InvalidCalculationException-系统重新启动”
“09-01-2021:超级系统识别出System.IO.WritingException请求用户下一步做什么”
“10-01-2021:哦,不,不再是内部异常。NullReference.NonCritical.User我们应该修复它!”
输出
“System.InvalidCalculationException”
“System.IO.WritingException”
“InternalException.NullReference.NonCritical.User”
正则表达式应该是什么样子的?
对于以“Exception”结尾的异常类型,我已尝试使用“\w+[.]\w+[.]*Exception”进行测试。
但是,如果异常类型包含更多的点,并且“异常”不在末尾,该怎么办
根据你写的,可以说每个例外都是一串字母和点
我认为这可以解决你的问题: “([A-Z][A-Z]*)。([^\s]+)”
签入link
那么:
(Demo)
以上内容确保您的字符串包含单词“Exception”,并包含非空白字符的任何字符
[^\s]*
将任何不是(^
)空白(\s
)0的内容匹配到无限次(*
)你可以用
见regex demo/regex demo #2。详情:
\b
-单词边界(?:[A-Za-z]+\.)*
-一个或多个字母后跟一个点的出现次数为零或多个[A-Za-z]*
-零个或多个字母Exception
-字符串Exception
(?:\.[A-Za-z]+)*
-一个点的零次或多次重复,然后是一个或多个字母李>\b
-单词边界李>\w
匹配任何字母、数字或下划线Python用法:
相关问题 更多 >
编程相关推荐