1

32 ビットの 16 進値のいずれかの値がゼロ以外の場合を判断するための正規表現を探しています。

データパターンは次のよう0x00000000になり、桁のいずれかがゼロ以外の場合を知りたいです。たとえば、if0x00001000または0x10000000or0xB000000は正規表現によってキャプチャされますが、0x00000000パターンではキャプチャされません。今、私は歩き方のパターンマッチを行います

0x[^0]
0x0[^0]
0x00[^0]
...
0x0000000[^0]

これでうまくいきますが、できれば 1 つのパターンを使用するほうがよいでしょう。ありがとう。

マーク

編集:プログラムでRegExが必要ないため、言及しませんでした。そうでなければ、別のアプローチを使用していたでしょうが、UltraEditを使用してログファイル内の値を検索するためにRegExを使用していました。検索するためのプログラムやその他の手段を開発することもできたでしょうが、私は単に怠け者で、ただ正直でした。Ben S ソリューションは、UltraEdit と Rad Software 正規表現デザイナーの両方で機能しました。ランピオン ソリューションはどちらのツールでも機能しませんでした。理由はわかりません。

4

8 に答える 8

5

16 進値をゼロに対してテストしてみませんか? よりシンプルに、より速く、より読みやすく。

正規表現g が本当に必要な場合は、0x0*[1-9a-fA-F][0-9a-fA-F]*それを行う必要があります。

ゼロ以外の 16 進数値が見つかるまで、できるだけ多くのゼロを探し、それがゼロであるかどうかに関係なく、残りの 16 進数を収集します。

: これは、32 ビットだけでなく、任意の長さの 16 進数に一致します。

于 2009-04-17T16:37:30.360 に答える
0
/0x0{0,7}[^0]/

' 0x'、その後に 0 ~ 7 ' '、' '0以外の何かが続く0

于 2009-04-17T17:21:34.950 に答える
0

確かに単純な文字列の比較で、DOES NOT EQUAL「0x00000000」の場合は一致しています。

私はそれを単純化しすぎていますか?たった一FALSE例ですよね?文字列が「0x00000000」の場合は?

必要がない限り、正規表現を使用しないでください。

于 2009-04-17T16:38:03.977 に答える