在Perl中\S
匹配任何非空白字符。
如何匹配除反斜杠\
之外的任何非空格字符?
答案 0 :(得分:127)
您可以使用character class:
/[^\s\\]/
匹配任何不是空白字符和\
的内容。这是另一个例子:
[abc]
表示“匹配a
,b
或c
”; [^abc]
表示“匹配a
,b
或c
以外的任何字符”。
答案 1 :(得分:10)
您可以使用前瞻:
/(?=\S)[^\\]/
答案 2 :(得分:1)
这对我有用 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"
g g
答案 3 :(得分:0)
在我的系统上:CentOS 5
我可以在集合之外使用\s
,但必须在集合中使用[:space:]
。实际上我只能在集合中使用[:space:]
。因此,要使用此匹配单个空格,我必须使用[[:space:]]
这真的很奇怪。
echo a b cX | sed -r "s/(a\sb[[:space:]]c[^[:space:]])/Result: \1/"
Result: a b cX
\s
[[:space:]]
[^[:space:]]
这两个不起作用:
a[:space:]b instead use a\sb or a[[:space:]]b
a[^\s]b instead use a[^[:space:]]b