如果单引号字符串包含转义单引号,如何用文字替换它?

时间:2016-07-06 11:20:45

标签: c# .net regex string

我需要使用文字转义所有单引号字符串,并且我使用以下正则表达式:

'[^']*'

它运行正常,除非我在字符串中转义了必须自行替换的单引号。例如,对于以下字符串:

[COMPUTE:{IIF([Client Name] LIKE '%Happy%', 'Happy\'s', 'Other\'s Jr.')}]

我有这些比赛:

%Happy%
Happy\
, 
s Jr.

我可以将\'替换为其他一些字符序列(例如internal_value)而不是执行字符串替换,但如果我可以使用正则表达式执行此操作会更清楚代替。

2 个答案:

答案 0 :(得分:1)

您可以使用

'((?:[^'\\]+|\\.)*)'

从正则表达式的圣经中修改了一下: - 掌握正则表达式

<强> regexstorm demo

答案 1 :(得分:1)

你只需要背后的负面看法。基本上只是对任何.*?使用惰性匹配,那么你可以在结束单引号之前为反斜杠(?<!\\)添加负面看法。

var reg = new Regex(@"'.*?(?<!\\)'");

foreach(Match m in reg.Matches(@"[COMPUTE:{IIF([Client Name] LIKE '%Happy%', 'Happy\'s', 'Other\'s Jr.')}]"))
    Console.WriteLine(m);

输出

  

&#39;%快乐%&#39;

     

&#39;快乐\&#39; S&#39;

     

&#39;其他小的&#39;

相关问题