正则表达式 - 在它们自己的捕获组中包含所有其他行部分
Regex - Include all other line sections in their own capture groups
我有一个包含这些内容的日志文件:
Log Started
Created Date: YY/MM/DD Time: HH:MM:SS Start
Added resources at module on YY/MM/DD HH:MM
Module 2 excecute
Resource depleted at HH:MM n pieces
Open YY/MM/DD HH:MM:SS Log to refer
Target end date of new resource YY/MM/DD approved
Log Ended. Result OK
图例:
- 'YY/MM/DD' & 'HH:MM:SS' - 这些是不重要的 时间戳
- 其他 - 还有重要数据
备注:
- 如你所见,日期和时间可以两者在同一行,
位于行内任何地方,时间可以是HH:MM或HH:MM:SS.
- 有些行可以没有 date/time 戳
我目前有下面的正则表达式,但它只能捕获每一行的日期和时间戳:
(\d{2}(\d{2})?\/\d{2}\/\d{2}(\d{2})?)|(\d{2}:\d{2}(:\d{2})?)
但是,我需要能够捕获整行,并将每个重要和不重要的数据部分放在一个组中.
我不确定如何在 C# 中执行此操作(因为我以前从未使用过),但这里是我会使用的正则表达式:
1。获取整行
基本上只是匹配所有内容,直到找到一个新行 char \n
.
2。获取每一行的非时间戳
将日志文件复制到一个新的临时变量中并删除所有时间戳和 split the resulting string by the newline chars \n
DEMO
3。获取不重要的时间戳
(\d{2}(\d{2})?\/\d{2}\/\d{2}(\d{2})?)|(\d{2}:\d{2}(:\d{2})?)
你的正则表达式非常好,工作起来很有魅力:)
首先,您必须使用 (.*)\n
对每一行进行分组。然后,您必须使用分组字符串中的正则表达式替换日期格式。
检查这里。 https://msdn.microsoft.com/en-us/library/e7f5w83z(v=vs.110).aspx
我有一个包含这些内容的日志文件:
Log Started
Created Date: YY/MM/DD Time: HH:MM:SS Start
Added resources at module on YY/MM/DD HH:MM
Module 2 excecute
Resource depleted at HH:MM n pieces
Open YY/MM/DD HH:MM:SS Log to refer
Target end date of new resource YY/MM/DD approved
Log Ended. Result OK
图例:
- 'YY/MM/DD' & 'HH:MM:SS' - 这些是不重要的 时间戳
- 其他 - 还有重要数据
备注:
- 如你所见,日期和时间可以两者在同一行, 位于行内任何地方,时间可以是HH:MM或HH:MM:SS.
- 有些行可以没有 date/time 戳
我目前有下面的正则表达式,但它只能捕获每一行的日期和时间戳:
(\d{2}(\d{2})?\/\d{2}\/\d{2}(\d{2})?)|(\d{2}:\d{2}(:\d{2})?)
但是,我需要能够捕获整行,并将每个重要和不重要的数据部分放在一个组中.
我不确定如何在 C# 中执行此操作(因为我以前从未使用过),但这里是我会使用的正则表达式:
1。获取整行
基本上只是匹配所有内容,直到找到一个新行 char \n
.
2。获取每一行的非时间戳
将日志文件复制到一个新的临时变量中并删除所有时间戳和 split the resulting string by the newline chars \n
DEMO
3。获取不重要的时间戳
(\d{2}(\d{2})?\/\d{2}\/\d{2}(\d{2})?)|(\d{2}:\d{2}(:\d{2})?)
你的正则表达式非常好,工作起来很有魅力:)
首先,您必须使用 (.*)\n
对每一行进行分组。然后,您必须使用分组字符串中的正则表达式替换日期格式。
检查这里。 https://msdn.microsoft.com/en-us/library/e7f5w83z(v=vs.110).aspx