例如:
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(/(["]).*?\1/gm, function ($0) {
return $0.replace(/\s/g, ',');
});
不幸的是,我唯一可用的工具是textmate的查找/替换功能。
我发现另一个与我需要的相反,但是使用了我需要的一行:
text.replace(/\s+(?=([^"]*"[^"]*")*[^"]*$)/gm, ',');
谢谢!
答案 0 :(得分:2)
您可以使用
\s+(?=(?:(?:[^"]*"){2})*[^"]*"[^"]*$)
请参阅regex demo
\s+
匹配1个或多个空格,后跟奇数个双引号。
详细信息:空白匹配部分很简单,正向前瞻需要
(?:(?:[^"]*"){2})*
- 除{a "
以外的{0}字符匹配的2个序列的零个或多个序列,然后是"
(0 + "..."
s)[^"]*"[^"]*
- 除"
以外的0 +个字符后跟"
,后跟0 {+ 1}以外的0 +字符(奇怪的引号必须是当前匹配的空格的权利)"
- 字符串结束。