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

时间:2011-05-25 13:20:12

标签: regex perl

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

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

4 个答案:

答案 0 :(得分:127)

您可以使用character class

/[^\s\\]/

匹配任何不是空白字符和\的内容。这是另一个例子:

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

答案 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:]]
  • 交替匹配
  • X我与"匹配,但没有空格" [^[:space:]]

这两个不起作用:

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

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