я не могу понять, почему регулярное выражение:Почему [^ d w s,] соответствует "leonardo, davinci"?
[^\d\s\w,]
сопоставляет строку:
"leonardo,davinci"
То есть мой тест:
$ echo "leonardo,davinci" | egrep '[^\d\w\s,]'
leonardo,davinci
Хотя это работает, как ожидалось:
$ echo "leonardo,davinci" | egrep '[\S\W\D]'
$
Большое спасибо
@ blueygh2 все это отрицается. Это может быть связано с эгрепом, никогда не использовавшим его. –
@ blueygh2 Обычно '^' отменяет все в списке между скобками. Я не вижу, как это регулярное выражение могло бы соответствовать этой строке. Насколько я вижу, вы используете только один символ, который не является цифрой, пространственным символом или символом слова. –
Боковое примечание, '[\ d \ w]' избыточно: '\ w = [a-zA-Z0-9_]'. – Sam