【发布时间】:2010-10-20 03:45:14
【问题描述】:
我正在寻找一个正则表达式来确定 32 位十六进制值中的任何值何时非零。
数据模式看起来像0x00000000,我想知道任何数字何时非零。例如,如果0x00001000 或0x10000000 或0xB000000 将被正则表达式捕获,而不是0x00000000 模式。现在我执行的步行模式匹配
0x[^0]
0x0[^0]
0x00[^0]
...
0x0000000[^0]
这会起作用,但如果可能的话,我更愿意使用一种模式。谢谢。
标记
编辑:我没有提到,因为程序中不需要 RegEx,否则我会使用不同的方法,但我使用 RegEx 来使用 UltraEdit 在日志文件中搜索值。我本可以开发一个程序或其他一些搜索方式,但我只是懒惰,只是诚实。 Ben S 解决方案在 UltraEdit 和 Rad Software 正则表达式设计器中都有效。 rampion 解决方案在这两种工具中都不起作用,不知道为什么。
【问题讨论】:
-
只匹配所有十六进制值,然后测试是否等于零
-
或者换句话说,使用
0x00000000作为你的正则表达式,如果不匹配则分支。 -
rampion 解决方案不起作用,因为他包含了编辑不需要的开始和结束正则表达式斜杠(/)。