如果单引号字符串包含转义的单引号,如何替换字符串?
问题描述:
我需要逃避与所有文字单引号字符串,我用下面的正则表达式:如果单引号字符串包含转义的单引号,如何替换字符串?
'[^']*'
它工作正常,当我已经逃脱了必须更换自己的字符串中的单引号除外。例如,对于以下字符串:
[COMPUTE:{IIF([Client Name] LIKE '%Happy%', 'Happy\'s', 'Other\'s Jr.')}]
我有这些匹配:
%Happy%
Happy\
,
s Jr.
我可以与字符(例如internal_value
)的一些其它序列替代\'
和比来执行字符串替换,但如果我可以用正则表达式代替它,它会更清晰。
答
你只需要后面负的样子。基本上只是使用任何东西的懒惰匹配.*?
然后你可以在结束单引号之前对反斜杠(?<!\\)
加负面看。
var reg = new Regex(@"'.*?(?<!\\)'");
foreach(Match m in reg.Matches(@"[COMPUTE:{IIF([Client Name] LIKE '%Happy%', 'Happy\'s', 'Other\'s Jr.')}]"))
Console.WriteLine(m);
输出
'%逍遥%'
'快乐\' S'
“其他\的小”