POSIX 扩展正则表达式中“空白”的特殊字符/转义是什么?

use*_*114 4 regex posix-ere

我对这个常规的exp概念很陌生。我正在尝试使用这个正则表达式

[^@\s]+$
Run Code Online (Sandbox Code Playgroud)

如果我将字符串指定为“abs”,它实际上排除了字符 's' 。这意味着 '\s' 被读取为字符 's' 而不是空格。请帮我解决这个问题

anu*_*ava 5

您可以使用以下 POSIX 等效项:

^[^@[:space:]]+$
Run Code Online (Sandbox Code Playgroud)

[:space:]匹配任何空格,包括换行符。如果您想避免匹配换行符,请改用:[:blank:]。


nha*_*tdh 5

POSIX 中的空格字符类是[:space:],因此在您的情况下,您的正则表达式将是:

[^@[:space:]]+$
Run Code Online (Sandbox Code Playgroud)

请注意,[:space:]不能[]像其他口味\d一样独立存在\s。单独的空格字符类必须位于内部[]:

[[:space:]]
Run Code Online (Sandbox Code Playgroud)