如何匹配除特定字符之外的任何非空格字符?

Laz*_*zer 100 regex perl

在Perl中\S匹配任何非空白字符.

如何匹配除反斜杠之外的任何非空白字符\

Tim*_*ker 136

您可以使用字符类:

/[^\s\\]/
Run Code Online (Sandbox Code Playgroud)

匹配任何不是空白字符的东西\.这是另一个例子:

[abc]意思是"匹配a,bc"; [^abc]的意思是"匹配除了任意字符a,b或者c".


Den*_*rdy 12

您可以使用前瞻:

/(?=\S)[^\\]/
Run Code Online (Sandbox Code Playgroud)

  • 如果它不是空间,它会向前看.然后负类接受除了类中的字符之外的任何东西(不是空格). (2认同)

sto*_*138 11

这对我有用 sed [编辑:下面的评论指出 sed 不支持 \s]

[^ ]
Run Code Online (Sandbox Code Playgroud)

尽管

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

没有

# Delete everything except space and 'g'
echo "ghai ghai" | sed "s/[^\sg]//g"
gg

echo "ghai ghai" | sed "s/[^ g]//g"
g g
Run Code Online (Sandbox Code Playgroud)

  • `\s` 不仅仅匹配空格字符。它包括 TAB、换行回车和其他(多少 * 其他取决于正则表达式风格)。它是 Perl 的发明,最初是 POSIX 字符类 `[:space:]` 的简写,在 `sed` 中不受支持。你上面的第一个正则表达式应该是`s/[^[:space:]g]//g`。 (3认同)