Что соответствует re.compile (r '[[]]')? - PullRequest
4 голосов
/ 07 марта 2009

Почему модуль Python действует по-другому:

>>> r = re.compile(r'[][]')
>>> r.findall(r'[]')
['[', ']']
>>> r = re.compile(r'[[]]')
>>> r.findall(r'[]')
['[]']
>>> r.findall(r'][')
[]

Ответы [ 3 ]

16 голосов
/ 07 марта 2009

Регулярное выражение "[[]]" соответствует подстроке "[]". Первый [в выражении начинает класс символов, а первый] заканчивает его. В классе есть только один символ ([), а за ним должен следовать второй]. Таким образом, выражение «любой из символов в« [», за которым следует«] ».

4 голосов
/ 07 марта 2009

Классы символов начинаются с [ и заканчиваются первым ].

Таким образом, выражение [][] является классом символов с символами ] и [, поскольку классы символов не должны быть пустыми: [][]
И выражение [[]] является классом символов с [ и единственным символом ] после этого: [[]]

0 голосов
/ 07 марта 2009

и r '[] []' образуют класс символов {'[', ']'} и соответствуют либо [[', либо'] '.

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