2015-04-09 1 views
-1

У меня есть что-то для экспертов по регулярному выражению. Я пытаюсь проверить, есть ли повторяющиеся последовательности в десятичном числе. На данный момент я получил эту работу:Регулярное выражение для повторных чисел с заданным началом

(\d{2,}?)\1 

Проблема заключается в том, что это не очень хорошо работает с числами, как 0.00035 или 11125.5

Здесь он совпадает с 0,000 или 111, как повторяющихся последовательностей, и Я не хочу, чтобы это произошло.

Есть ли способ изменить это регулярное выражение так, чтобы оно проверялось только после десятичной точки и исключало X число нулей из первых десятичных знаков?

+0

Какой язык вы работаете? Каков ваш ожидаемый результат? –

+0

Язык Java. Я хочу найти первую повторяющуюся последовательность, поэтому, если я ставлю 0.025699999, выход должен быть 999 (я думаю, может быть меньше или больше 9) –

ответ

1

Вы можете это сделать с этим рисунком:

[0-9]+\.0*+[0-9]*?([0-9]{2,})\1[0-9]* 

Шаблон использует собственнический квантор 0*+, чтобы предотвратить, чтобы соответствовать неоднократным нулям после десятичного разделителя. (притяжательный квантификатор запрещает обратное отслеживание).

[0-9]*? имеет нежирный квантор, чтобы найти первую повторяющуюся последовательность.

+0

Я тоже об этом думал, но это не будет соответствовать '0,00000101', хотя ОП на самом деле не ссылался на этот случай. – Kobi

+0

@Kobi: поскольку он хочет игнорировать нули после десятичной точки, этот пример не должен возвращать соответствие. –

+0

Thats correct casimir, я просто модифицировал ваш пример. Я не хочу проверять односимвольную рекурсию в числе, только рекурсию более одного. Поэтому я изменил последний + на {2,} –

Смежные вопросы