Ваше регулярное выражение не поддерживает различные суффиксы (l
, u
, f
и т. Д.), А также не поддерживает шестнадцатеричные или восьмеричные константы.
Ведущие знаки (+
или -
перед числом) не являются лексической частью константы;это унарные операторы +
и -
.Фактически, все целочисленные и плавающие константы являются положительными.
Если вам нужно полностью поддерживать плавающие константы C99, вам необходимо поддерживать шестнадцатеричные показатели (p
вместо e
).
ВашРегулярное выражение также принимает много недопустимых последовательностей символов, например 1.0.0.0eee-e1
.
Одно регулярное выражение, совпадающее со всеми целочисленными и плавающими литералами C, будет довольно длинным.