Похоже, что другие решения не смогли обработать +/-
и такие случаи, как 2e3
, который поддерживает java.lang.Integer.parseInt(String)
, поэтому я решу проблему. Я немного неопытен в регулярных выражениях, поэтому, возможно, я допустил несколько ошибок, использовал что-то, что не поддерживает синтаксический анализатор регулярных выражений в Java, или сделал его слишком сложным, но операторы вроде бы работали в Kiki 0.5.6 .
Все регулярные выражения предоставляются как в неэкранированном формате для чтения, так и в экранированном формате, который можно использовать в качестве строкового литерала в Java.
Чтобы получить байт, short, int или long из строки:
unescaped: ([\+-]?\d+)([eE][\+-]?\d+)?
escaped: ([\\+-]?\\d+)([eE][\\+-]?\\d+)?
... и для бонусных баллов ...
Чтобы получить двойное число или число с плавающей точкой:
unescaped: ([\+-]?\d(\.\d*)?|\.\d+)([eE][\+-]?(\d(\.\d*)?|\.\d+))?
escaped: ([\\+-]?\\d(\\.\\d*)?|\\.\d+)([eE][\\+-]?(\\d(\\.\\d*)?|\\.\\d+))?