我有一个匹配“x”的正则表达式,如果它前面有一个非空格字符而不是"
任意数量的空格字符:
[^"\s]\s*x
这在 JavaScript 中按预期工作:
$ node
> /[^"\s]\s*x/.test('x')
false
> /[^"\s]\s*x/.test(' x')
false
> /[^"\s]\s*x/.test('" x')
false
> /[^"\s]\s*x/.test(': x')
true
但是,grep 的行为有所不同:
$ echo 'x' | grep '[^"\s]\s*x'
$ echo ' x' | grep '[^"\s]\s*x'
x
$ echo '" x' | grep '[^"\s]\s*x'
" x
$ echo ': x' | grep '[^"\s]\s*x'
: x
这种行为有解释吗?我将如何重写 grep 的正则表达式,使其按预期运行?