How to match any non white space character except a particular one?

前端 未结 4 1632
情深已故
情深已故 2020-12-08 03:24

In Perl \\S matches any non-whitespace character.

How can I match any non-whitespace character except a backslash \\?

4条回答
  •  悲&欢浪女
    2020-12-08 04:09

    On my system: CentOS 5

    I can use \s outside of collections but have to use [:space:] inside of collections. In fact I can use [:space:] only inside collections. So to match a single space using this I have to use [[:space:]] Which is really strange.

    echo a b cX | sed -r "s/(a\sb[[:space:]]c[^[:space:]])/Result: \1/"
    
    Result: a b cX
    
    • first space I match with \s
    • second space I match alternatively with [[:space:]]
    • the X I match with "all but no space" [^[:space:]]

    These two will not work:

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

提交回复
热议问题