Python 重新编译(r';[[]]';)与什么匹配?
使用Python的re模块,为什么以下操作会有所不同: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'][') [] 正则表达式“[]]”与子字符串“[]”匹配。表达式中的第一个[开始一个字
>>> r = re.compile(r'[][]')
>>> r.findall(r'[]')
['[', ']']
>>> r = re.compile(r'[[]]')
>>> r.findall(r'[]')
['[]']
>>> r.findall(r'][')
[]
正则表达式“[]]”与子字符串“[]”匹配。表达式中的第一个[开始一个字符类,第一个]结束它。类中只有一个字符([),然后必须后跟第二个]。因此表达式是““[”中的任何字符,后跟“]”和r'[][]”形成一个字符类{'[',']},并与'['或']'匹配。字符类以
[
开头,以第一个]
结尾
因此表达式[]]
是一个字符类,其中字符]
和[
作为字符类不能为空:[
][
]
表达式
[[]]
是一个字符类,只有[
和单个字符]
之后:[
[
]