【问题标题】:How to replace single quotes string with literal if it contains escaped single quotes?如果包含转义的单引号,如何用文字替换单引号字符串?
【发布时间】:2016-07-06 11:20:44
【问题描述】:

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

'[^']*'

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

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

我有这些比赛:

%Happy%
Happy\
, 
s Jr.

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

【问题讨论】:

    标签: c# .net regex string


    【解决方案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);
    

    输出

    '%Happy%'

    '快乐'

    '其他的 Jr.'

    【讨论】:

      【解决方案2】:

      你可以使用

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

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

      regexstorm demo

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-06-13
        • 2021-08-16
        • 2023-04-02
        • 2014-05-21
        相关资源
        最近更新 更多