[]
s в регулярном выражении обозначают класс символов. Если диапазоны не заданы, это неявно или s каждый символ внутри него вместе. Таким образом, [abcde]
совпадает с (a|b|c|d|e)
, за исключением того, что он ничего не фиксирует; он будет соответствовать любому из a
, b
, c
, d
или e
. Весь диапазон указывает набор символов ; [ac-eg]
говорит, что «соответствует любому из: a
, любому символу между c
и e
или g
". Таким образом, ваше совпадение говорит: «соответствовать любому из: 0
, любому символу между 1
и 1
(, т.е. , только 1
) или 2
.
Ваша цель состоит в том, чтобы указать диапазон чисел: любое число между 01
и 12
, написанное двумя цифрами. В этом конкретном случае вы можете сопоставить его с 0[1-9]|1[0-2]
: либо 0
, за которым следует любое между 1
и 9
или 1
, за которой следует любая цифра между 0
и 2
. В общем случае вы можете преобразовать любой диапазон чисел в действительное регулярное выражение аналогичным образом. более эффективный вариант, чем обычные выражения, или существующая функция или модуль, которые могут создавать регулярное выражение для вас. Это зависит от вашего языка.
Хорошо! Я глубоко взглянул на эту проблему! Заключительное слово - вы не можете удалить эти таблицы. Если вы удалите эти таблицы, идентичность не будет работать, как ожидалось. Для более подробной информации: