2013-06-21 71 views
1

我是相当新的正则表达式,因此这可能是你见过在计算器上:-)搜索和替换冒号(:)双引号之间使用正则表达式

我有一个大的JSON文件与简单的问题文字是这样的:

{..., "text": "BLAH BLAH", ...}

文本可能包含任何特殊字符,也字符,如\",我明白的可以看作是正则表达式中的转义字符。我试图找到并替换单个字符冒号:与代字号~内的部分跟着"text"最好在Notepad ++。任何帮助将不胜感激。

回答

0

这个正则表达式将找到名为text的字段值中的所有:,并用~替换字符。请注意,使用Notepad ++ v5正则表达式存在问题。我在这里演示在记事本测试++ v6.3.3

正则表达式:与("text":\s"[^"]*?):

替换:$1~

输入字符串:{"not text": "12:34", "text": "BLAH:BLAH", "Never get a": ":oskupee"}

enter image description here

+0

这是否适用于''text“:”我有一个:“说”关于某事,在下午6点很重要“' –

+0

对不起,我们能做的最好的表达就是这样的'(”text“:\ s”(?:(?!“} |”,\ s “\ w +”:\ s“)。)*):'你需要多次运行,直到记事本报告没有更多的更改。不幸的是,这种表达方式超出了记事本的范围,因为它不支持表达式中的某些内容。一般来说,这个表达式可以工作http://regexr.com?35b69。 –

0

这里是我做过什么(所有帮助@Mike感谢,但我不得不作出许多修改。这就是为什么我回答我的问题,以便其他用户可以得到完整的答案)

  1. 搜索在记事本++
  2. \"text\": \".*? : .*?\",查找和替换\1~\2全部更换:~
  3. 手动纠正错误
+0

在记事本++中给定文本'{“text”:“BLAH:BLAH”,“Never get a”:“:oskupee”,“not text”:“12:34”},这个表达式产生'{〜永远不会得到一个“:”:oskupee“,”不是文本“:”12:34“}' –

+0

也在记事本++给定文本'{”文本“:”BLAH:BLAH“,”永远不会得到“:”:oskupee“ ,“not text”:“12:34”}',这个表达式产生'{〜“not text”:“12:34”}' –

0

你可以这样做:

find: ("(?:[^"]+|(?<=\\)")*")\s*: 
replace: $1~ 

这个想法是捕获双引号内的内容,将其放入替换内容中。

我使用lookbehind来允许双引号内的转义双引号。

相关问题