[:graph:]在正则表达式中等于\ S吗?

时间:2014-09-21 14:17:43

标签: regex posix

http://www.regular-expressions.info/posixbrackets.html处有一个表格,它汇总了所有POSIX括号表达式,并提供了相应的简写。

我无法理解为什么这并没有提及\S作为[:graph:]的简写。他们不一样吗?如果是的话,那么请你举例解释一下他们的不同之处吗?

1 个答案:

答案 0 :(得分:6)

[:graph:]是与\S不同的字符类。

[:graph:]仅匹配可见字符。但是\S匹配任何非空格的字符(空格,换行符,字符返回,换行符,制表符,垂直制表符等)。

例如,[:graph:]与NUL,Backspace,BEL,...不匹配,但\S与它们匹配。


使用regex包(支持POSIX字符类)的Python示例:

>>> import regex
>>> regex.findall(r'[[:graph:]]', 'a \0 \a \b z')
['a', 'z']
>>> regex.findall(r'\S', 'a \0 \a \b z')
['a', '\x00', '\x07', '\x08', 'z']