http://www.regular-expressions.info/posixbrackets.html处有一个表格,它汇总了所有POSIX括号表达式,并提供了相应的简写。
我无法理解为什么这并没有提及\S
作为[:graph:]
的简写。他们不一样吗?如果是的话,那么请你举例解释一下他们的不同之处吗?
答案 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']