python正则表达式,与特殊序列相同的字符类?

时间:2016-03-19 22:27:23

标签: python regex terminology

来自文档https://docs.python.org/3/library/re.html

  

[] - (用于表示一组字符)

     
      
  • 在集合
  • 中也接受字符类,例如\ w或\ S(在下面定义)   

什么是character classes?我只熟悉special characters*+?等)和special sequences\n\r\s等)。角色类是指后者special sequences吗?或者他们完全不同?如果是这样,character classes究竟包括哪些内容?

character classes在整个页面中仅显示2倍。它定义不明确,并不表示\w\Scharacter classes的某些成员还是唯一成员。进一步的测试表明\n也可以在[]中使用,但不能在\A之内使用 - 加剧了混乱。

1 个答案:

答案 0 :(得分:2)

是的,它有点不明确,但与此同时我认为它相当直观。简而言之,"字符类"是特殊字符,或"转义序列"以\...形式表示多个字符的组,例如"所有空格" \s,"所有数字" \d,或者"所有非空白" \S,是"特殊序列的一部分"。

您应该知道三个角色类:

  • 数字\d,对应[0-9];请注意,那些与浮点数不匹配,因为.中的\d 不是
  • " word" -characters,\w,对应[a-zA-Z0-9_],但(在Python 2中)不包含非ascii字符,例如变音符号,重音符号等。
  • 空格,\s,例如空格,制表符,换行符等。

此外,每个角色类都可以倒置"使用相应的大写字母,即\W匹配\w的所有内容,以及\D\S的相似内容。

其他"特殊序列"只包含一个字符,例如换行符\n或制表符\t(虽然它们实际上不是正则表达式语言的一部分,但只是基本的Python字符串转义序列),而其他字符代表抽象概念,如"在单词和非单词之间" \b或"在字符串的开头" \A