在 POSIX 正则表达式中环顾四周以匹配除最后一个以外的所有空格(对于 gsub)

lookaround in POSIX regex to match all spaces except the last (for gsub)

...因为这个简单的问题而吓坏了:

我正在使用带有 gsub 处理器的 摄取管道 替换除最后一个 之外的所有(空白)空格。 例如:

"hello world regex is fubar " 结果是 "hello, world, regex, is, fubar"

如何转换 PCRE 语法(我发现这对 gsub TRE 模式不起作用)

"/\s(?=.\S*)/g"

POSIX,喜欢...

"/[[:space:]](?=.[[:space:]]*)/g"

(仅交换空格,不交换环视)

编辑:因为我只能在字符串中提供正则表达式,所以我不能使用除 gsub 之外的其他处理器。 '\s' 或 '\S' 显然标记为 "unknown".

工作 使用 " +([^ ])" - 另一种解决方案是 " +(.)"。 (都没有双引号)

与 replacement/substitution 字符串 ,

感谢 Wiktor Stribiżew 指出这一点。

无论出于何种原因,POSIX 文字 [:space] 不起作用,为什么 [[:space:]]+(.) 也不起作用,即使它是 正确的正则表达式 .