我试图构建正则表达式来提取某些字段,但其中一个字段(Type)可能有多个空格。所以我一直在寻找匹配,直到它找到带有digit(\s\d)的空间。
我的正则表达式,但它不工作的第三个样本日志。附regex 101截图
Added:\s+(?<Type>[^\d]+)\s(?P<Transaction_ID>\d+)\s[^\(]+\((?P<Status>\w+)
样品 Package
[2023-08-31T12:02:40,758] [async-1 ] INFO Added: ABC XYX CCC 265333655 IR_TEST (VERIFIED)
[2023-08-31T12:02:41,192] [async-1 ] INFO Added: XX_Rates 265332643 IR_TEST (VERIFIED)
[2023-08-31T12:02:43,452] [async-1 ] INFO Added: XX_Rates_4_XX 26533555 IR_TEST (VERIFIED)
1条答案
按热度按时间wlwcrazw1#
您可以使用
参见regex demo。
Added:
-文字字符串\s+
-一个或多个空格(?<Type>\S.*?)
-组“类型”:一个非空白字符,然后是除换行符字符以外的任何零个或多个字符,尽可能少\s+
-一个或多个空格(?P<Transaction_ID>\d+)
-组“Transaction_ID”:一个或多个数字[^(]*
-(
以外的零个或多个字符\(
- a(
字符(?P<Status>\w+)
-组“状态”:一个或多个单词字符。