re.compile(r'[[]]')匹配什么?

时间:2009-03-07 08:59:28

标签: python regex

使用Python的re模块,为什么以下行为不同:

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

3 个答案:

答案 0 :(得分:16)

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

答案 1 :(得分:4)

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

因此,表达式[][]是一个字符类,其字符为][,因为字符类不能为空: [ { {1}}的 ][
表达式]是一个只有[[]]的字符类,之后是单个字符[ ] [ [ ]

答案 2 :(得分:0)

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