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

python regex, character classes same as special sequences?

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

[] - (used to indicate a set of characters)

  • Character classes such as \w or \S (defined below) are also accepted inside a set

什么是character classes?我只熟悉 special characters (*,+,?, 等) 和 special sequences (\n,\r, \s,等等)。字符类指的是后者special sequences吗?或者它们完全不同?如果是这样,character classes 究竟包括什么?


character classes 在整个页面中只出现了 2 次。它定义不明确,没有说明 \w\Scharacter classes 的某些成员还是唯一的成员。进一步的测试表明 \n 也可以在 [] 中使用,但不能像 \A 这样的东西使用 - 加剧了混乱。

是的,它的定义有点模糊,但同时我认为它很直观。简而言之,"character classes"是特殊字符,或者"escape sequences"以\...的形式表示多个字符的组,如"all whitespace"\s、"all numbers" \d 或 "all non-whitespace" \S,并且是 "special sequences".

的子集

你应该知道三个字符 classes:

  • 位数\d,对应[0-9];请注意,这些不匹配浮点数,因为 .\d
  • 中是 而不是
  • "word"-字符,\w,对应[a-zA-Z0-9_],但(在Python2中)不包括非ascii字符,如元音变音、重音符号等
  • 白色spaces,\s,如space,制表符,换行符等

此外,每个字符 class 可以通过使用相应的大写字母 "inverted" ,即 \W 匹配所有 not \w\D\S.

类似

其他 "special sequences" 仅包含单个字符,例如换行符 \n 或制表符 \t (尽管它们并不是正则表达式语言的一部分,只是基本的 Python string escape sequences),其他表示抽象概念,如"between a word and a non-word" \b,或"at the beginning of the string" \A.