请帮我解决我的问题。 我有以下字符串的列表:
a
"b
c"
"ddd"
'ee'
a"b"c
a'b'c
因此我需要:
"a"
"b"
"c"
"ddd"
"ee"
"a\"b\"c"
"a'b'c"
请帮我写替换模式
请您参考如下方法:
正如其他人已经在评论中指出的那样:这不是正则表达式的工作。事实上,如果您尝试这样做,您将获得比直接想法可读性和可维护性差的代码。
string.Concat("\"", myString.Trim('"', '\'').Replace("\"","\\\""), "\"");
PowerShell 测试:
PS Home:\> filter fixString { '"' + $_.Trim('"', "'").Replace('"', '\"') + '"' }
PS Home:\> 'a','"b','c"','"ddd"',"'ee'",'a"b"c',"a'b'c" | fixString
"a"
"b"
"c"
"ddd"
"ee"
"a\"b\"c"
"a'b'c"
但是,如果您迫切需要正则表达式,我只能想到以下三个单独的替换:
myString = Regex.Replace(myString, @"^['""]|['""]$", "");
myString = Regex.Replace(myString, @"""", @"\""");
myString = Regex.Replace(myString, "^|$", @"""");
PowerShell 测试:
PS Home:\> 'a','"b','c"','"ddd"',"'ee'",'a"b"c',"a'b'c" |
>> % { $_ -replace '^[''"]|[''"]$' -replace '"','\"' -replace '^|$','"' }
"a"
"b"
"c"
"ddd"
"ee"
"a\"b\"c"
"a'b'c"
感谢 Toader Mihai Claudiu,以下仅适用于两个正则表达式谁提供了一些重要的建议:
myString = Regex.Replace(@"^['""]?(.*?)['""]?$", @"""$1""");
myString = Regex.Replace(@"(?<=.)""(?=.)", @"\""");
PowerShell 测试:
PS Home:\> 'a','"b','c"','"ddd"',"'ee'",'a"b"c',"a'b'c" |
>> % { $_ -replace '^[''"]?(.*?)[''"]?$','"$1"' -replace '(?<=.)"(?=.)','\"' }
"a"
"b"
"c"
"ddd"
"ee"
"a\"b\"c"
"a'b'c"
现在问问自己:一个月后您还知道代码的作用吗?也许一年?
