来自文档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
,\S
是character classes
的某些成员还是唯一成员。进一步的测试表明\n
也可以在[]
中使用,但不能在\A
之内使用 - 加剧了混乱。
答案 0 :(得分:2)
是的,它有点不明确,但与此同时我认为它相当直观。简而言之,"字符类"是特殊字符,或"转义序列"以\...
形式表示多个字符的组,例如"所有空格" \s
,"所有数字" \d
,或者"所有非空白" \S
,是"特殊序列的一部分"。
您应该知道三个角色类:
\d
,对应[0-9]
;请注意,那些与浮点数不匹配,因为.
中的\d
不是 \w
,对应[a-zA-Z0-9_]
,但(在Python 2中)不包含非ascii字符,例如变音符号,重音符号等。 \s
,例如空格,制表符,换行符等。此外,每个角色类都可以倒置"使用相应的大写字母,即\W
匹配\w
中不的所有内容,以及\D
和\S
的相似内容。
其他"特殊序列"只包含一个字符,例如换行符\n
或制表符\t
(虽然它们实际上不是正则表达式语言的一部分,但只是基本的Python字符串转义序列),而其他字符代表抽象概念,如"在单词和非单词之间" \b
或"在字符串的开头" \A
。