如何在regex中的一个位置使用捕获的命名组,以便在regex中的不同位置使用,从而将相同的模式与相同的命名组匹配
下面是我的正则表达式,它完全按照需要捕获第二个日志模式,在第一个模式中,它捕获的最多是PID,之后必须使用与“Message”相同的命名组捕获内容 如何使用在一个地方定义的捕获命名组在regex中的另一个地方使用它如何在regex中的一个位置使用捕获的命名组,以便在regex中的不同位置使用,从而将相同的模式与相同的命名组匹配,regex,Regex,下面是我的正则表达式,它完全按照需要捕获第二个日志模式,在第一个模式中,它捕获的最多是PID,之后必须使用与“Message”相同的命名组捕获内容 如何使用在一个地方定义的捕获命名组在regex中的另一个地方使用它 (?P<timestamp>\w+\s\d+\s\d+:\d+:\d+)\s(?P<host>\w+)\s(?P<process>\w+\/\w+|\w+)\[(?P<process_id>\d+)\]\W+|(?P<messag
(?P<timestamp>\w+\s\d+\s\d+:\d+:\d+)\s(?P<host>\w+)\s(?P<process>\w+\/\w+|\w+)\[(?P<process_id>\d+)\]\W+|(?P<message_id>\d+[a-zA-Z0-9]+).+:(?P<message>.*)
在模式中,可以省略最后一个或
|
,因为要匹配的部分是同一字符串的一部分
如果组消息
始终存在,并且消息\u id
是可选的:
(?P<timestamp>\w+\s\d+\s\d+:\d+:\d+)\s(?P<host>\w+)\s(?P<process>\w+\/\w+|\w+)\[(?P<process_id>\d+)\]\W+(?P<message_id>\d+[a-zA-Z0-9]+)?.+:(?P<message>.*)
(?P\w++\s\d++\s\d+:\d+:\d+)\s(?P\w+)\s(?P\w++/\w++\w++\[(?P\d+)\]\w+(?P\d+[a-zA-Z0-9]+)。+:(?P.*)
匹配时间戳格式和空格字符(?P\w+\s\d+\s\d+:\d+:\d+)\s
匹配单词字符和空格字符(?P\w+)\s
匹配字字符,也可以选择(?P\w+\/\w+\w+
和字字符/
匹配\[(?P\d+)\]\W+
之间的1+个数字,后跟非单词字符[]
将此组设置为可选组(?P\d+[a-zA-Z0-9]+)?
匹配到字符串末尾,回溯到最后出现的+:
:
匹配行的其余部分(?P.*)
(?P<timestamp>\w+\s\d+\s\d+:\d+:\d+)\s(?P<host>\w+)\s(?P<process>\w+\/\w+|\w+)\[(?P<process_id>\d+)\]\W+(?P<message_id>\d+[a-zA-Z0-9]+)?.+:(?P<message>.*)