非零十六进制值的正则表达式

lor*_*hog 1 regex hex

我正在寻找一个正则表达式来确定 32 位十六进制值中的任何值何时不为零。

数据模式看起来像0x00000000,我想知道任何数字何时不为零。例如, if0x000010000x10000000or0xB000000将被正则表达式捕获,但不是0x00000000模式。现在我执行步行模式匹配

0x[^0]
0x0[^0]
0x00[^0]
...
0x0000000[^0]
Run Code Online (Sandbox Code Playgroud)

这会起作用,但如果可能的话,我更愿意使用一种模式。谢谢。

标记

编辑:我没有提到程序中不需要正则表达式,否则我会使用不同的方法,但我使用正则表达式使用 UltraEdit 在日志文件中搜索值。我本可以开发一个程序或其他一些搜索方法,但我只是懒惰,只是诚实。Ben S 解决方案适用于 UltraEdit 和 Rad Software 正则表达式设计器。ramion 解决方案在这两种工具中都不起作用,不知道为什么。

Ben*_*n S 5

为什么不针对零测试十六进制值?更简单、更快、更易读。

如果真的需要正则表达式g,0x0*[1-9a-fA-F][0-9a-fA-F]*应该这样做。

它寻找尽可能多的零,直到找到一个非零的十六进制值,然后收集其余的十六进制值,不管它是否为零。

注意:这将匹配任何长度的十六进制,而不仅仅是 32 位。