Подтвердить что ты не робот

Как представить число исправлений в регулярном выражении?

Мне интересно, лучше ли представлять количество исправлений в регулярном выражении. Например, если я просто хочу совместить ровно 14 букв/цифр, я использую ^\w\w\w\w\w\w\w\w\w\w\w\w\w\w$, который будет соответствовать слову типа UNL075BE499135 и не соответствует UNL075BE499135AAA есть ли удобный способ сделать это? В настоящее время я делаю это в java, но, я думаю, это может относиться и к другому языку. Спасибо заранее.

4b9b3361

Ответ 2

^\w{14}$ в Perl и любом регулярном выражении в стиле Perl.

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

Ответ 3

Фиксированный синтаксис повторения использует {m,n} вместо метки звезды/плюса/вопроса.

Из java.util.regex.Pattern:

X{n}      X, exactly n times
X{n,}     X, at least n times
X{n,m}    X, at least n but not more than m times

Все метасимволы повторения имеют одинаковый приоритет, поэтому, как и вам может понадобиться группировка для *, + и ?, вы также можете использовать {n,m}.

  • ha* соответствует, например. "haaaaaaaa"
  • ha{3} соответствует только "haaa"
  • (ha)* соответствует, например. "hahahahaha"
  • (ha){3} соответствует только "hahaha"

Также, как и *, + и ?, вы можете добавить модификаторы ? и + с неохотой и притяжательным повторением соответственно.

    System.out.println(
        "xxxxx".replaceAll("x{2,3}", "[x]")
    ); "[x][x]"

    System.out.println(
        "xxxxx".replaceAll("x{2,3}?", "[x]")
    ); "[x][x]x"

По существу где-то a * является метасимволом повторения для "zero-or-more", вы можете использовать конструкцию повторения {...}. Обратите внимание, что это не так: наоборот, вы можете использовать конечное повторение в lookbehind, но вы не можете использовать *, потому что Java официально не поддерживает бесконечную длину lookbehind.

Ссылки

Связанные вопросы

Ответ 4

В Java создайте шаблон с Pattern p = Pattern.compile("^\\w{14}$"); для получения дополнительной информации см. javadoc