поиск в регулярном выражении POSIX для соответствия всем пробелам, кроме последнего (для gsub)
... схожу с ума из-за этой простой проблемы:
Я использую конвейер Ingest с процессором gsub для замены всех (белых) пробелов, кроме последнего. Например:
"hello world regex is fubar "
привести к "hello, world, regex, is, fubar"
Как я могу преобразовать синтаксис PCRE (который, как я выяснил, не работает с шаблонами gsub TRE)
"/\s(?=.\S*)/g"
В POSIX, например...
"/[[:space:]](?=.[[:space:]]*)/g"
(заменяются только пробелы, а не поиск)
Изменить: поскольку я могу предоставить регулярное выражение только в строке, я не могу использовать другой процессор, кроме gsub. '\s' или '\S' явно помечены как "неизвестно".
1 ответ
Работал с использованием" +([^ ])"
- другое решение было бы " +(.)"
.
(Оба без двойных кавычек)
со строкой замены / подстановки ,$1
.
Спасибо Wiktor Stribiżew за указание на это.
По какой-то причине литерал POSIX [:space]
не работает, почему [[:space:]]+(.)
тоже не сработало, даже если это правильное регулярное выражение.