Answers:
您可以先行使用:
/(?=\S)[^\\]/
/(?=\S)\W/
THIS IS A TEST, AND AGAIN
。以下对我来说很有效(?=\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"
g g
\s
匹配的不只是空格字符。它包括TAB,换行符回车符和其他(还有多少取决于正则表达式的风格)。这是Perl的发明,最初是POSIX字符类的简写,但[:space:]
不支持sed
。您上面的第一个regex应该是s/[^[:space:]g]//g
。
echo "ghai ghai" | sed "s/[^[:space:]g]//g"
产量:g g
在我的系统上: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
([^[:space:]])
代替([^\s])
。我在openSUSE Tumbleweed公司2018 04 03
^
解释为否定,什么时候解释为行的开头?在这方面,所以这不会匹配行开头空格的数量$0~/\s*^\s/