在 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:]]+(.)
也不起作用,即使它是 正确的正则表达式 .
...因为这个简单的问题而吓坏了:
我正在使用带有 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:]]+(.)
也不起作用,即使它是 正确的正则表达式 .