我有一个像这样的字符串:
var path = "'Ah'This is a 'sample\'e'";
在上面的字符串中,单引号的开头和结尾(双引号之后)与预期的一样。
即"'...............'";
在字符串的其余部分中,有单引号(被替换(即\'和未替换)。无论是否被替换,我都必须替换单引号。如果已经被转义,则无需执行任何操作)我很难找到合适的正则表达式来代替它。
替换后的字符串必须看起来像这样(请注意,开头和结尾的单引号不能替换。
"'Ah\'This is a \'sample\'e'";
有人可以帮忙吗?
答案 0 :(得分:1)
您可以使用
s = Regex.Replace(s, @"(?<!\\)(?!^)'(?!$)", @"\'");
请参见regex demo。正则表达式图:
详细信息
(?<!\\)
-与字符串中没有紧跟\
的位置相匹配的负向后搜索(?!^)
-与字符串中没有立即跟在字符串开头的位置匹配的否定超前查询(如果当前位置是字符串的开头,则匹配失败)'
-一个'
字符(?!$)
-与字符串中不立即跟在字符串末尾的位置匹配的否定前瞻(如果当前位置是字符串的末尾,则匹配失败)。