регулярное выражение: переменный символ / последовательный числовой - PullRequest
0 голосов
/ 25 августа 2009

Я ищу регулярное выражение в Java, которое соответствует следующему шаблону:

  1. два чередующихся числовых или буквенных значения Пример: 12121212 или adadadad

  2. числовые или буквенные последовательности, содержащие не менее 4 последовательных цифр. Пример: cdefgh или 123456

спасибо

Ответы [ 3 ]

2 голосов
/ 25 августа 2009

Я думаю, что регулярное выражение, вероятно, неправильный инструмент для шаблона 2. «все числовые» или «все альфа» просты, но «последовательное» требование будет трудно выразить. Возможно, вам лучше написать простой цикл, чтобы проверить ваши требования.

0 голосов
/ 26 августа 2009

Для первого, если у вас есть набор SIGMA, который является вашим алфавитом, вы можете сделать:

(СИГМА СИГМА) +

Это позволяет aaaaaa, но я не уверен, что это разрешено ...

0 голосов
/ 25 августа 2009

Регулярные выражения не предназначены для анализа этих разновидностей шаблонов. Тем не менее, вы можете обойти это немного, хотя это грязно.

Второй довольно легко можно форсировать ровно для четырех последовательностей:

(abcd|bcde|cdef|...|wxyz|0123|1234|...|6789)

Но это ни в коем случае не охватывает 5 последовательностей и выше. Это было бы противно.

Вы могли бы сделать что-то подобное для первого случая, хотя это немного более неразумно, потому что есть 26 букв + 10 цифр (я предполагаю, что вы просто делаете это для нижнего регистра), так что если вы хотели ЛЮБЫЕ чередующиеся пары вам нужно 36 * 35 = 1260 возможностей в вашем регулярном выражении. Что немного долго. Это МОЖЕТ быть сделано, но это нежелательно.

Ваш пример, конечно, может быть проанализирован следующим образом:

(12|ab)+

Что разумно. Но если вы ищете более общее решение для любой пары цифра / алфавит, вам потребуется исчерпывающе сгенерировать список.

В заключение, вам лучше НЕ использовать регулярные выражения. Они не предназначены для таких поисков.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...