Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 正则表达式:如何忽略连词中的点_Python_Python 3.x_Regex_String - Fatal编程技术网

Python 正则表达式:如何忽略连词中的点

Python 正则表达式:如何忽略连词中的点,python,python-3.x,regex,string,Python,Python 3.x,Regex,String,为了分析日志文件,我需要使用python和正则表达式提取异常类型。 异常类型始终包含子字符串“exception”。 问题是子字符串“Exception”并不总是在其名称的末尾。 此外,异常类型由未知数量的点组成。 预期行为: 输入 “08-01-2021:存在System.InvalidCalculationException-系统重新启动” “09-01-2021:超级系统识别到System.IO.WritingException请求用户下一步做什么” “10-01-2021:哦,不,不

为了分析日志文件,我需要使用python和正则表达式提取异常类型。
异常类型始终包含子字符串“exception”。
问题是子字符串“Exception”并不总是在其名称的末尾。
此外,异常类型由未知数量的点组成。

预期行为:

输入
“08-01-2021:存在System.InvalidCalculationException-系统重新启动”
“09-01-2021:超级系统识别到System.IO.WritingException请求用户下一步做什么”
“10-01-2021:哦,不,不再是内部异常。NullReference.NonCritical.User我们应该修复它!”

输出
“系统无效计算异常”
“System.IO.WritingException”
“InternalException.NullReference.NonCritical.User”

正则表达式应该是什么样子的?
对于以“Exception”结尾的异常类型,我已尝试使用“\w+[.]\w+[.]*Exception”进行测试。
但是,如果异常类型包含更多的点,并且“异常”不在末尾怎么办?

您可以使用

\b(?[A-Za-z]+\)*[A-Za-z]*异常(?:\.[A-Za-z]+)*\b
\b(?:\w+\)*\w*异常(?:\。\w+*\b
见/。详情:

  • \b
    -单词边界
  • (?:[A-Za-z]+\)*
    -零次或多次出现一个或多个字母后跟一个点
  • [A-Za-z]*
    -零个或多个字母
  • 异常
    -字符串
    异常
  • (?:\.[A-Za-z]+)*
    -一个点的零次或多次重复,然后是一个或多个字母
  • \b
    -单词边界
\w
匹配任何字母、数字或下划线

Python用法:

re.findall(r'\b(?:\w+\)*\w*异常(?:\。\w+*\b',文本)
那么:

[^\s]*Exception[^\s]*
()

以上内容确保您的字符串包含单词“Exception”,并包含非空白字符的任何字符


[^\s]*
匹配任何不是(
^
)空白(
\s
)的0到无限次(
*
)。

根据您编写的内容,可以说每个异常都是一串字母和点

我认为这可以解决你的问题: “([A-Z][A-Z]*)。([^\s]+)”


请在

中查看,你能提供一个链接吗?我编辑了答案,请再次查看答案。我还添加了链接@NewUbuntuUser不适用于“InternalException.NullReference.NonCritical.User”您的解决方案是否总是给出与Jim Simson的解决方案相同的结果?@NewUbuntuUser否,有一个答案。