Regex 用于替换给定上下文中出现的所有字符的正则表达式

Regex 用于替换给定上下文中出现的所有字符的正则表达式,regex,regex-lookarounds,Regex,Regex Lookarounds,我试图编写一个搜索和替换正则表达式(ruby)来替换给定上下文中字符串中的所有字符实例 正则表达式需要替换json键中的所有“.”实例,我正在与引用作斗争。我有一种感觉,我需要以某种方式使用lookaround,但我尝试过的变体似乎无法工作 一些示例字符串: , "key1.name" : " value.something " , "key2.complex.name" : "value.else" , "this.is.the.most.complex.name" : "value" 我最

我试图编写一个搜索和替换正则表达式(ruby)来替换给定上下文中字符串中的所有字符实例

正则表达式需要替换json键中的所有“.”实例,我正在与引用作斗争。我有一种感觉,我需要以某种方式使用lookaround,但我尝试过的变体似乎无法工作

一些示例字符串:

, "key1.name" : " value.something "
, "key2.complex.name" : "value.else"
, "this.is.the.most.complex.name" : "value"
我最初使用这个正则表达式来替换单个事件(替换为“FULLSTOP”):

期望输出:

, "key1FULLSTOPname" : " value.something "
, "key2FULLSTOPcomplexFULLSTOPname" : "value.else"
, "thisFULLSTOPisFULLSTOPtheFULLSTOPmostFULLSTOPcomplexFULLSTOPname" : "value"
我猜我需要在搜索中使用
(?=\)
,但不确定如何正确地将其用于引用。我使用开头的
和结尾的
来定义json键的上下文


提前感谢。

您可以使用以下内容作为示例:

str = ', "this.is.the.most.complex.name" : "value';
str = str.gsub(/\.+/, 'FULLSTOP');

puts str;
我没有注意到“价值”部分

你应该能够轻松地做到这一点

(?=.*?\:)\.
使用这个。参见演示

编辑:

使用这个可以非常确定

见演示


问题在于JSON都在一行上,并且在值中也有句号,因此需要将其上下文化为键。您可以分两步完成:步骤1:找出“,”和“:”之间的所有字符串。在这里,您将得到一个包含所有JSON键的数组第2步:将上述逻辑应用于所有这些字符串,并替换值中的句号。我正在更新我的问题,以澄清我只想替换JSON键,而不是值。这太好了。我知道我需要一个前瞻。一旦我看到它,它就有意义了。@Brett是的,只要深入研究它,就可以揭示正则表达式的强大威力。
(?=.*?\:)\.
(?=.*?\"\s*\:)\.