Почему не регулярное выражение с \ S работы?
Ваше регулярное выражение с \s
действительно работает. Что не работает, это ваша строка замены. И, конечно, как указывали другие, это не должно.
Люди путаются относительно оператора замещения (s/.../.../
). Часто я нахожу, что люди считают весь оператор «регулярным выражением». Но это не так, это оператор, который принимает два аргумента (или операнды).
Первый операнд (между первым и вторым разделителем) интерпретируется как регулярное выражение.Второй операнд (между вторым и третьим разделителями) интерпретируется как строка с двумя кавычками (конечно, параметр /e
изменяется немного).
Так операция подстановки выглядит следующим образом:
s/REGEX/REPLACEMENT STRING/
Регулярное выражение распознает специальные символы, такие как ^
и +
и \s
. Строка замены - нет.
Если люди перестали недопонимать, как работает оператор замещения, они могут перестать ожидать, что функции регулярных выражений будут работать вне регулярных выражений :-)