1

構文の強調表示のために Qt で数字を一致させようとしています。次の正規表現を試しています。

"[^a-fA-F_][0-9]+" // For numbers.
"[^a-fA-F_][0-9]+\\.[0-9]+" // For decimal numbers.
"[^a-fA-F_][0-9]+\\.[0-9]+e[0-9a-fA-F]+" // For scientific notation.
"[^a-fA-F_]0[xX][0-9a-fA-F]+" // For hexadecimal numbers.

ただし、テキストは [1024 のように一致し、[ も強調表示されます。1024 の部分だけを強調したかったのです。

もう 1 つの問題は、aoe2 と入力したときと aoe25 と入力したときに、正規表現が強調表示されることです。文字またはアンダースコアが前にある場合、番号を強調表示したくありません。これは、識別子になるためです。

どうすれば解決できますか?

4

1 に答える 1

4

[次のステートメントにより、一致します。

[^a-fA-F_]
This will match anything that is not the letters A-F(any case) or an underscore

それがあなたが望むものなら、なぜ数字を一致させないのですか?

For integers:         \b\d+
For decimal numbers:  \b\d+.\d+
For scientific:       \b\d+e\d+
For hexadecimal:      \b[\dA-Fa-F]+

また、@ Jan Dvorakが言及しているように、単語境界を使用\bして、一致が単語(または数字)の先頭から始まるようにすることができます。ここで例を参照してください: http://regex101.com/r/kC6dK3

于 2013-01-05T19:29:08.293 に答える