select 引号中所有空格的正则表达式?

Regular expression to select all whitespace that IS in quotes?

例如:

string text = 'some text "and some more" and some other "this is a second group" okay the end';.

我想捕获引号之间的所有空格。最终目标是用逗号替换这些空格。

最终目标,例如:

'some text "and,some,more" and some other "this,is,a,second,group" okay the end'

例如,这将满足我在 javascript:

中的要求
text.replace(/(["]).*?/gm, function ([=12=]) {
    return [=12=].replace(/\s/g, ',');
});

不幸的是,我唯一可用的工具是 textmate 的 find/replace 功能。

我找到了另一个与我需要的相反的东西,但使用了我需要的一行:

text.replace(/\s+(?=([^"]*"[^"]*")*[^"]*$)/gm, ',');

谢谢!

您可以使用

\s+(?=(?:(?:[^"]*"){2})*[^"]*"[^"]*$)

regex demo

\s+ 匹配 1 个或多个后跟奇数个双引号的空格。

详情: 空白匹配部分很简单,正lookahead需要

  • (?:(?:[^"]*"){2})* - 零个或多个序列的 2 个序列匹配除 " 以外的 0+ 个字符,然后是 " (0+ "..."s)
  • [^"]*"[^"]* - " 以外的 0+ 个字符后跟 ",然后再跟 " 以外的 0+ 个字符(奇数引号必须在当前匹配的空格的右边)
  • $ - 字符串结尾。