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

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

我怎样才能匹配除了反斜杠\任何非空白字符?

你可以使用一个字符类 :

 /[^\s\\]/ 

匹配任何不是空格字符或\任何东西。 这是另一个例子:

[abc]表示“匹配abc ”; [^abc]表示“匹配除abc以外a任何字符”。

你可以使用一个前瞻:

 /(?=\S)[^\\]/ 

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

 [^ ] 

 [^\s] 

没有

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

在我的系统上:CentOS 5

我可以在集合之外使用\s ,但必须在集合中使用[:space:] 。 实际上我只能在集合中使用[:space:] 。 所以要使用这个匹配单个空间,我必须使用[[:space:]]这真的很奇怪。

 echo ab cX | sed -r "s/(a\sb[[:space:]]c[^[:space:]])/Result: \1/" Result: ab cX 
  • 第一个空间我匹配\s
  • 第二个空间我匹配与[[:space:]]
  • XI与“无空间” [^[:space:]]

这两个将不起作用:

 a[:space:]b instead use a\sb or a[[:space:]]b a[^\s]b instead use a[^[:space:]]b