Python 重新编译(r';[[]]';)与什么匹配?

Python 重新编译(r';[[]]';)与什么匹配?,python,regex,Python,Regex,使用Python的re模块,为什么以下操作会有所不同: >>> r = re.compile(r'[][]') >>> r.findall(r'[]') ['[', ']'] >>> r = re.compile(r'[[]]') >>> r.findall(r'[]') ['[]'] >>> r.findall(r'][') [] 正则表达式“[]]”与子字符串“[]”匹配。表达式中的第一个[开始一个字

使用Python的re模块,为什么以下操作会有所不同:

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

正则表达式“[]]”与子字符串“[]”匹配。表达式中的第一个[开始一个字符类,第一个]结束它。类中只有一个字符([),然后必须后跟第二个]。因此表达式是““[”中的任何字符,后跟“]”

和r'[][]”形成一个字符类{'[',']},并与'['或']'匹配。

字符类以
[
开头,以第一个
]结尾

因此表达式
[]]
是一个字符类,其中字符
]
[
作为字符类不能为空:
[
][
]


表达式
[[]]
是一个字符类,只有
[
和单个字符
]
之后:
[
[
]