Если вам нужно что-то, похожее на C-float, вот как заставить Perl выкашливать регулярное выражение, которое делает это, используя модуль Regexp :: Common из CPAN :
$ perl -MRegexp::Common -le 'print $RE{num}{real}'
(?:(?i)(?:[+-]?)(?:(?=[.]?[0123456789])(?:[0123456789]*)(?:(?:[.])(?:[0123456789]{0,}))?)(?:(?:[E])(?:(?:[+-]?)(?:[0123456789]+))|))
Вы можете настроить это немного, если хотите, но это дает вам основную идею.
Это действительно удивительно гибко. Например, это выдает шаблон для вещественных чисел с базой 2, которые допускают запятые каждые три места:
$ perl -MRegexp::Common -le 'print $RE{num}{real}{-base => 2}{-sep => ","}{-group => 3}'
(?:(?i)(?:[+-]?)(?:(?=[.]?[01])(?:[01]{1,3}(?:(?:[,])[01]{3})*)(?:(?:[.])(?:[01]{0,}))?)(?:(?:[E])(?:(?:[+-]?)(?:[01]+))|))
Документация показывает, что полный возможный синтаксис числовых шаблонов, которые он может вам выпустить, таков:
$RE{num}{int}{-base}{-sep}{-group}{-places}
$RE{num}{real}{-base}{-radix}{-places}{-sep}{-group}{-expon}
$RE{num}{dec}{-radix}{-places}{-sep}{-group}{-expon}
$RE{num}{oct}{-radix}{-places}{-sep}{-group}{-expon}
$RE{num}{bin}{-radix}{-places}{-sep}{-group}{-expon}
$RE{num}{hex}{-radix}{-places}{-sep}{-group}{-expon}
$RE{num}{decimal}{-base}{-radix}{-places}{-sep}{-group}
$RE{num}{square}
$RE{num}{roman}
Делая это по-настоящему, чтобы настроить его для того, что вы хотите. И да, конечно, вы можете использовать эти шаблоны в Java.
Наслаждайтесь.