2016-07-06 93 views
1

我需要逃避與所有文字單引號字符串,我用下面的正則表達式:如果單引號字符串包含轉義的單引號,如何替換字符串?

'[^']*' 

它工作正常,當我已經逃脫了必須更換自己的字符串中的單引號除外。例如,對於以下字符串:

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

我有這些匹配:

%Happy% 
Happy\ 
, 
s Jr. 

我可以與字符(例如internal_value)的一些其它序列替代\'和比來執行字符串替換,但如果我可以用正則表達式代替它,它會更清晰。

回答

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); 

輸出

'%逍遙%'

'快樂\' S'

「其他\的小」

1

您可以使用

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

修改了一下,從正則表達式的聖經: - 精通正則表達式

regexstorm demo

相關問題