2
|
Erik van Brakel scottrakes · 技术社区 · 16 年前 |
![]() |
1
3
仅当日志消息不包含行首的日期时,此操作才有效,但您可以尝试在“消息”组中为日期添加否定的先行声明:
请注意,这需要使用regexoptions.multiline标志。 |
![]() |
2
2
显然,您需要将“消息行”与“日志行”区分开来;如果您允许消息部分在新行之后以日期/时间开始,那么就无法确定什么是消息的一部分,什么不是。因此,您不需要使用点,而是需要一个表达式,它允许任何不包括换行符、日期和时间的内容。 但就个人而言,我不会使用正则表达式来解析整个日志条目。我更喜欢使用自己的循环对每行进行迭代,并使用一个简单的正则表达式来确定一行是否是新条目的开头。从可读性的角度来看,这也是我的偏好。 |
![]() |
3
1
问题是您需要终止regex模式,这样它就知道一条消息何时结束,然后下一条消息何时开始。 在默认模式下运行时,换行符作为隐式终止符工作。 问题是,如果您进入多行模式,就没有终止符,因此模式将吞没整个文件。非贪心匹配几个字符,可能只有一个。 现在,如果使用下一条消息的日期作为终止符,我认为您的解析器将只得到其他每一行。 文件中是否还有其他东西可以终止模式? |
![]() |
4
0
您可能会发现使用适当的解析器生成器来解析文件要容易得多-Antlr可以在C中生成一个。上下文无关的解析器只有在你“得到”它们之前才显得很难——之后,它们比正则表达式更简单、更友好… |
![]() |
5
0
你需要通过
|
|
Robert King · Unity C#语法问题-转换位置 1 年前 |
![]() |
JBryanB · 如何从基本抽象类访问类属性 1 年前 |
|
law · 检查答案按钮的输入字符串格式不正确 2 年前 |
![]() |
i_sniff_ket · 在unity之外使用unity类 2 年前 |