这个序列' [[A-Z] [a-z]]'意味着在python中的正则表达式?

时间:2017-05-16 13:02:11

标签: python regex

我试图在python中搜索正则表达式中的一些模式。

我们知道如果我们使用模式' [A-Za-z] +' ,则意味着找到包含大写字母A到Z的字符序列或小写a到z。 所以我的单行代码(后跟答案)是,

var ic = [[[123,231,12],[56,43,124]],[[78,152,76],[64,132,200]]]

当我尝试其他模式' [[AZ] [az]] +' 时,它返回一个空列表,单行代码如下,

var ig = [[[122,122,122],[74,74,74]],[[102,102,102],[132,132,132]]]

那么,当我在一个字符集中使用两个序列时,会创建什么样的模式? 请指导。

1 个答案:

答案 0 :(得分:6)

引擎会将[[A-Z][a-z]]+视为:

  • [[A-Z]作为允许任何大写字母(A-Z)或[的第一个字符类。可以将其视为[\[A-Z],而不是[转义
  • [a-z]作为允许任何小写字母(a-z)
  • 的第二个字符类
  • ]+允许一个或多个]

因此它会匹配[b]Aa]Aa]]]]]]]等,并且不会匹配您的字符串'这是我的区域!'

要进一步使用它,您可以尝试regex101 demo

广场括号的嵌套:

为了更好地理解方括号的嵌套如何在正则表达式中起作用,请考虑另一个示例[[[ABC]]]

  

找到一个开头方括号([)表示字符类的开头,然后所有后续的开方括号 [被视为已转义{{1直到遇到一个结束方括号\[,表示字符类的结束。

要测试一下,请看一下这些例子:

  • ][[[ABC]]]相同,后跟[\[ABC]。示例]{2}

  • A]][[[[ABC]]]]相同,后跟[\[ABC]。示例]{3}

  • []]][[[[[ABC]]]]]相同,后跟[\[ABC]。示例]{4}

希望这有帮助!