首页 > 解决方案 > POSIX 正则表达式中的环视以匹配除最后一个之外的所有空格(对于 gsub)

问题描述

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

我正在使用带有 gsub 处理器的Ingest 管道来替换除最后一个. 例如:

"hello world regex is fubar "以导致"hello, world, regex, is, fubar"

如何转换PCRE语法(我发现它不适用于 gsub TRE 模式)

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

对于POSIX,就像...

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

(仅交换空间,而不是环视)

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

标签: regexgsubingest

解决方案


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

使用替换/替换字符串,$1

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

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


推荐阅读