具有十六进制地址的 .Net 多行正则表达式

.Net multiline regex with a hex address

我非常接近,但无法完成此多行正则表达式捕获的交易。我只想捕获一个十六进制地址,但只有当十六进制地址后跟下一行的“wtf”时才可以。

这是日志示例:

1616846098450
trying : 16633299966633299966633299
0x4d68c66a4b7ac51f87e22d0e0b70a4ebc7f6286e7834ec3da18c6147f578afe8
wtf
0x848fcea771facf657677f1f3a919ab7e43b1f7d0df95bf8375113c5621e063c2

这是我正在使用的正则表达式:

0[xX][0-9a-fA-F]+\nwtf

它也错误地捕获了 wtf。我在使用 .Net 正则表达式引擎的 windows 应用程序中使用它。

您可以在要捕获的十六进制周围放置一个捕获组(我猜您不想要 0x?然后您可以忽略 \nwtf 部分:

您可以对“wtf”部分应用肯定的先行断言。这样,它将被匹配但不会被捕获(我在这里的后视中包括了新行,因为我认为它无论如何都会被剥离)。演示是 here.

0[xX][0-9a-fA-F]+(?=\nwtf)