正则表达式不适用于 Splunk 中几乎相同的原始数据

Regex does not work on nearly identical raw data in Splunk

我使用 Splunk(数据监控)并且我有一个正则表达式来检查我们的日志并需要 return 一些作业失败的信息。正则表达式工作得很好,但对于一个工作失败,它不会输出任何东西,但对于另一个几乎相同的工作,它会输出任何东西。我试过正则表达式检查器,但没有得到任何明确的答案。 Splunk 正则表达式是 PCRE(Perl 兼容正则表达式)并使用 PCRE C 库。

有问题的正则表达式: "(Exception \W: |Exception: |Microsoft.Data.SqlClient.SqlException | Exception\s \(\dx\d{8}\)\: | Microsoft.Data.SqlClient.SqlException\s \(\dx\d{8}\)\: )(?<ErrInfo2>[A-Za-z0-9\s_@.\/<#&->+?=:$!',\\)(;-]+)"

它适用的一段文字:

Microsoft.Data.SqlClient.SqlException (0x80131904): Transaction (Process ID 76) was deadlocked on lock resources with another process and has been chosen as the deadlock victim. Rerun the transaction.

处理的一段文字:

System.Data.SqlClient.SqlException (0x80131904): Cannot insert duplicate key row in object 'collecting.IstHochrechnung' with unique index 'IX_IstHochrechnung_Year_CostUnitId_CostCenterId'. The duplicate key value is (2022, 2605, 333).

Exception\s \(\dx\d{8}\)\: 部分处理 (0x80131904): 条目,所以我不明白为什么它会保持为空。

非常感谢任何帮助!!

一个正在使用命名空间 Microsoft.Data,另一个 System.Data。你只需要做到,所以没关系。

(Exception \W: |Exception: | ?\w{1,}.Data.SqlClient.SqlException\s ?\(\dx\d{8}\)\: )(?<ErrInfo2>[A-Za-z0-9\s_@.\/<#&->+?=:$!',\\)(;-]+)

这仍然关心命名空间,但已经做到了第一段可以是任何单词。例如。 test.Data.SqlClient.

我总是在 regex101.com

上测试

这也是一个较小的查询...注意到您有相当多的重复。

[\w\.]{1,}Exception ?\(0x\d{8}\)?: ?(?<ErrInfo2>[A-Za-z0-9\s_@.\/<#&->+?=:$!',\\)(;-]+)