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

时间:2014-09-04 13:26:00

标签: regex regex-lookarounds

我正在尝试编写搜索并替换正则表达式(在ruby中)以替换给定上下文中字符串中所有字符的实例。

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

一些示例字符串:

, "key1.name" : " value.something "
, "key2.complex.name" : "value.else"
, "this.is.the.most.complex.name" : "value"

我最初使用此正则表达式替换单个事件(将其替换为“FULLSTOP”):

s/, "([^.]+)\.([^"]+)" :/, "\1FULLSTOP\2" :/g‏‏

期望的输出:

, "key1FULLSTOPname" : " value.something "
, "key2FULLSTOPcomplexFULLSTOPname" : "value.else"
, "thisFULLSTOPisFULLSTOPtheFULLSTOPmostFULLSTOPcomplexFULLSTOPname" : "value"

我猜我需要在搜索中以某种方式使用(?=\.),但不确定如何正确使用引用。我使用开头,和结束:作为定义json密钥的上下文的方法。

提前感谢。

2 个答案:

答案 0 :(得分:1)

您可以将以下内容用作示例:

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

puts str;

我没有注意到'价值'部分。

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

答案 1 :(得分:1)

(?=.*?\:)\.

使用此功能。参见演示。

http://regex101.com/r/cH8vN2/5

编辑:

(?=.*?\"\s*\:)\.

使用它非常肯定。

参见演示。

http://regex101.com/r/cH8vN2/6