regex - 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' 显然被标记为“未知”。
解决方案
使用" +([^ ])"
- 另一种解决方案是" +(.)"
. (都没有双引号)
使用替换/替换字符串,$1
。
感谢Wiktor Stribiżew指出这一点。
无论出于何种原因,POSIX 文字[:space]
不起作用,为什么[[:space:]]+(.)
也不起作用,即使它是正确的 regex。