2015-03-06 3 views
-2

У меня есть шаблон регулярного выражения "^[a-zA-z0-9]+$" Как я понимаю, он должен описать слово или что-то в этом роде. Я пытаюсь проверить строку как "counter":Почему функция соответствия регулярному выражению python соответствует этому специальному символу?

re.match("^[a-zA-z0-9]+$", "counter") 
# Result: <_sre.SRE_Match object at 0x000000AA2053C578> # 

Если у меня есть специальный символ, как "/" он не будет соответствовать (ничего не возвращает).

re.match("^[a-zA-z0-9]+$"), "coun/ter") 

Но если я пытаюсь это:

re.match("^[a-zA-z0-9]+$", "coun[ter") 
# Result: <_sre.SRE_Match object at 0x000000AA2053C440> # 

Это соответствует снова, и я не понимаю, почему?

ответ

1

Вы регулярное выражение должно быть:

re.match('^[a-zA-Z0-9]+$', "coun[ter") 

не

re.match('^[a-zA-z0-9]+$', "coun[ter") 

Когда вы A-z он захватывает все от A (ASCII 65) в z (122), а также соответствует [ (91) ,

+1

Я этого не видел. –

+1

@anubhava У вас есть хорошее зрелище! – d6bels

+3

Это простой вопрос, вызванный типографской ошибкой, которая является [вне темы] (http://stackoverflow.com/help/on-topic). [Пожалуйста, не отвечайте на вопросы вне темы.] (Http://meta.stackoverflow.com/a/285623/3622940) Возьмите __ [тур] __. – Unihedron

Смежные вопросы