Что означает a-z-A-Z в регулярном выражении?
Я работал с другим кодом, и я пробежал регулярное выражение [^0-9a-z-A-Z]
. Это имеет близкое сходство с общим [^0-9a-zA-Z]
, предназначенным для исключения не буквенно-цифровых символов, но обратите внимание на дополнительную тире в середине, между строчными z
и прописными буквами A
.
Я не очень хорошо знаком с регулярными выражениями, но теперь я прочитал несколько страниц, и ни одно из правил, которые я видел, похоже, не охватывает то, что будет означать этот синтаксис. Возможно, это даже не действительный синтаксис, но интерпретатор регулярных выражений Golang, похоже, не возражает. Буду признателен за любые разъяснения. Спасибо.
Ответы
Ответ 1
Тире в классе символов в месте, где он не может быть интерпретирован как диапазон, интерпретируется как буквальная тире. Таким образом, выражение исключает символы 0
- 9
, a
- z
, a
- z
и -
. Вот почему нет синтаксической ошибки.
Это, наверное, опечатка. Если тире должно быть там, то для предотвращения путаницы он должен быть экранирован и/или удален из диапазонов, например [^0-9a-zA-Z\-]
Ответ 2
Он исключает знак минуса.
Вы можете проверить регулярное выражение здесь: http://www.regexr.com/