Укажите диапазон размеров глобуса в регулярном выражении - PullRequest
0 голосов
/ 25 октября 2009

Как определить минимальное и максимальное (возможно, неограниченное) количество раз, которое определенный шаблон должен повторяться? Я знаю, что есть ? и *, с помощью которых я мог бы построить шаблон, повторяя его определенное количество раз, но я знаю, что есть специальная запись для него с использованием {}, я просто не могу вспомнить, как это .

Ответы [ 3 ]

4 голосов
/ 25 октября 2009

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

Например, строка, состоящая только из трех-четырех альфа-символов, за которыми следуют две цифры, за которыми следуют от шести до двенадцати буквенно-цифровых символов, будет:

^[A-Za-z]{3,4}[0-9]{2}[A-Za-z0-9]{6,12}$

Если вы хотите неограниченные повторения на верхней стороне (без максимального числа), просто пропустите n. Для неограниченных повторений на нижней стороне есть некоторые реализации, которые не поддерживают опускание m, поэтому вы можете просто указать 0, чтобы это было безопасно). Другими словами,

[a-z]{6,}[0-9]{0,4}

означает шесть или более строчных букв, за которыми следуют от нуля до четырех цифр.

Ваши особые случаи - всего лишь версии этого, как в:

'[a-z]?' is identical to '[a-z]{0,1}'
'[a-z]*'                 '[a-z]{0,}'
'[a-z]+'                 '[a-z]{1,}'
2 голосов
/ 25 октября 2009

После шаблона включается {min, max}

1 голос
/ 25 октября 2009

Вы можете найти руководство по повторению в Regex (а также кучу других вещей) здесь

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