По какому принципу данное регулярное выражение выбирает идентификаторы
У меня есть регулярное выражение, которые выбирает все слова или цифры, которые начинаются либо с буквы либо со знака _, просто отдельное число не выбирает:
([_A-z][_a-zA-Z0-9]*)
Например она выберет текст: a123, _123, abcd Но не выберет: 123,1(все числа), 3abc(выберет только abc). Вопрос вот в чем, зачем нам первое выражение [_A-z], если во втором выражении мы это продублировали, и почему если убрать его работать не будет?
Ответы (1 шт):
Автор решения: ReinRaus
→ Ссылка
( # начало 1-ой группы (сохраняемая группа)
[_A-z] # нижнее подчёркивание и любой символ из интервала с A по z,
# здесь же скрыта потенциальная ошибка (всё будет работать, но логика неправильная - смотрите таблицу ascii),
# видимо хотели сделать заглавная буква или подчеркивание, а это записывается так: [_A-Z]
[_a-zA-Z0-9]* # нижнее подчёркивание, любая буква латинского алфавита или цифра 0 и более раз
) # конец 1-ой группы
Теперь ответ на прямой вопрос:
Первое выражение не включает в себя цифры и буквы в нижнем регистре и определяет, что совпадение должно начинаться с буквы в верхнем регистре или подчеркивания