保留原始消息并在正则表达式中提取捕获的字段
keeping original message as well as extract Captured fields in regex
我正在使用正则表达式解析行
字符串:2013-3-03 14:27:33 [main] INFO Main - Start
正则表达式:/^(?<time>\d{4}-\d{1,2}-\d{1,2} \d{1,2}:\d{1,2}:\d{1,2}) \[(?<thread>.*)\] (?<level>[^\s]+)(?<msg>.*)/
此正则表达式提取以下字段
"thread" :"main",
"level" :"INFO",
"msg":" Main - Start"
我想要的输出是:
"Message" : "2013-3-03 14:27:33 [main] INFO Main - Start"
"thread" :"main",
"level" :"INFO",
"msg":" Main - Start"
由于我只能解析一次字符串消息,有没有一种方法可以实现所需的输出,同时保留 RAW 消息和提取文件?
如果要命名,可以将整个图案包裹在另一组中(?<message>
。
您可以使用否定字符 \[(?<thread>[^\]\[]*)]
class 编写组 thread 而不是使用 .*
来防止一些回溯
也[^\s]+
可以写成\S+
^(?<message>(?<time>\d{4}-\d{1,2}-\d{1,2} \d{1,2}:\d{1,2}:\d{1,2}) \[(?<thread>[^\]\[]*)\] (?<level>\S+)(?<msg>.*))
看到一个regex demo
我正在使用正则表达式解析行
字符串:2013-3-03 14:27:33 [main] INFO Main - Start
正则表达式:/^(?<time>\d{4}-\d{1,2}-\d{1,2} \d{1,2}:\d{1,2}:\d{1,2}) \[(?<thread>.*)\] (?<level>[^\s]+)(?<msg>.*)/
此正则表达式提取以下字段
"thread" :"main",
"level" :"INFO",
"msg":" Main - Start"
我想要的输出是:
"Message" : "2013-3-03 14:27:33 [main] INFO Main - Start"
"thread" :"main",
"level" :"INFO",
"msg":" Main - Start"
由于我只能解析一次字符串消息,有没有一种方法可以实现所需的输出,同时保留 RAW 消息和提取文件?
如果要命名,可以将整个图案包裹在另一组中(?<message>
。
您可以使用否定字符 \[(?<thread>[^\]\[]*)]
class 编写组 thread 而不是使用 .*
也[^\s]+
可以写成\S+
^(?<message>(?<time>\d{4}-\d{1,2}-\d{1,2} \d{1,2}:\d{1,2}:\d{1,2}) \[(?<thread>[^\]\[]*)\] (?<level>\S+)(?<msg>.*))
看到一个regex demo