如何匹配除特定的空白字符之外的任何非空白字符?
在Perl \S
匹配任何非空白字符。
我怎样才能匹配除了反斜杠\
任何非空白字符?
你可以使用一个字符类 :
/[^\s\\]/
匹配任何不是空格字符或\
任何东西。 这是另一个例子:
[abc]
表示“匹配a
, b
或c
”; [^abc]
表示“匹配除a
, b
或c
以外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