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
、\S
是 character 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
.
来自文档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
、\S
是 character 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
.