正则表达式匹配C语言数字

时间:2013-01-05 19:24:00

标签: c++ c regex qt qregexp

我正在尝试匹配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部分。

另一个问题是当我输入aoe2时以及当我键入aoe25时正则表达式突出显示。我不想在字母或下划线之前突出显示数字,因为那时它将是一个标识符。

我该如何解决?

1 个答案:

答案 0 :(得分: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