Исходный вопрос: _Как выбрать все знаки пунктуации, кроме с регулярным выражением.
Группа [:punct]
определяется как символов, которые не являются буквами, цифры, управляющие символы или пробелы .
[:punct] = [^[:alnum:][:cntrl:][:space:]]
Итак, вы хотите символы, которые не являются буквами, цифрами, управляющими символами, пробелами или -символ .
[^[:alnum:][:cntrl:][:space:],]
После редактирования OP:
Следующее должно выполнить запрошенное:
gsub(/(^[^[:alnum:],]*|[^[:alnum:],[:blank:]]|[^[:alnum:],]*$)/, "", local)