C#正则表达式替换每行中第一个和最后一个出现的双引号

C#正则表达式替换每行中第一个和最后一个出现的双引号,c#,.net,regex,C#,.net,Regex,存在一个多行字符串,该字符串带有未转换的双引号,因此无法解析该字符串 字符串示例: NS:No.Po.Pr.C.描述:“1942:一个爱情故事,UnEN Run\U0E9LISA.U00 E9,Vidhu Vinod Chopra Sordi Se Les 15 Juulet 1994。IL会见亚尼卡普,Manisha Koirala和杰基Surf.Long Long M'U.E9TraseESUnUncU.E.E8S MayAuaOffice MaelsLaCARRII.U00 E8RE

存在一个多行字符串,该字符串带有未转换的双引号,因此无法解析该字符串

字符串示例:

<代码> NS:No.Po.Pr.C.描述:“1942:一个爱情故事,UnEN Run\U0E9LISA.U00 E9,Vidhu Vinod Chopra Sordi Se Les 15 Juulet 1994。IL会见亚尼卡普,Manisha Koirala和杰基Surf.Long Long M'U.E9TraseESUnUncU.E.E8S MayAuaOffice MaelsLaCARRII.U00 E8RE de Manisha Koirala。” ns:common.topic.description“1942年:宝莱坞剧作家米·奥斯尼的爱情故事一部电影akcji zrealizowany w 1993 roku przez Vidhu Vinod Chopra,autora takich film\u00f3w jak Misja w Kasmirze,czy Eklavya:皇家卫队。W rolach g\u0142\u00f3wnych Anil Kapoor i Manisha Koirala',W drugoplanowych Jackie Shroff,Anupam Kher,Danny Denzongpa i Pran。hitem jako音乐剧的电影。jego odby Premiera-jego-odby-si-u0119-ju-u017c-po-Mierci-nagrodzonego-potem-kompozytora-weterana-Bollywoodu-Rahul-Dev-Burman。到mi\u0142osna。Jej t\u0142em jest rok 1942,w kt\u00f3rym Gandhi已经“离开印度!”wezwa\u0142 Anglik\u00f3w do odej\u015bcia z kraju po 200 letniej okupacji。Syn s\u0142u\u017c\u0105cego Anglikom Indusa zakochuje si\u0119 w c\u00f3rce bojownika o wolno\u015b\u0107 kraju。”@pl;

我尝试用这段代码替换字符串每一行上出现的第一个和最后一个“”(代码不好,不起作用,只是不知道其他方法来做需要的事情):

var freebaseFixedDfstring=Regex.Replace(freebaseFixedDfstring,\”,委托(匹配)
{
bool first=match.Index==1;
bool last=match.NextMatch().Index==0;
如果(第一个| |最后一个)
返回“\”\“\”;
其他的
返回match.Value;
},RegexOptions.Compiled | RegexOptions.Multiline);

如何使用正则表达式替换第一个和最后一个要替换为

您可以使用此选项替换第一个和最后一个
。请参阅演示


如果要在起始位置或最后位置替换引号,则不需要正则表达式。但是,在您的示例中,引号不在文本行的起始位置或最后位置

以下是如何做到这一点:

var res = Regex.Replace(text, "(?<=^[^\"]*)\"|\"(?=[^\"]*$)", "\"\"\"");


不幸的是,它在C#Regex
var result=Regex.Replace(originalString,“^\”|\“$”,“\”\“\”\”,RegexOptions.Compiled | RegexOptions.Multiline)中不起作用
@Zelid不需要使用
多行
选项。如果您的程序中没有使用regex进行任何其他操作,那么我觉得它引入了一个用于此目的的过于复杂的功能。太好了,也谢谢您的解释!我只需要添加RegexOptions.Multiline,现在您的regex可以很好地用于多行字符串。
var res = Regex.Replace(text, "(?<=^[^\"]*)\"|\"(?=[^\"]*$)", "\"\"\"");
var text = "Quick \"brown fox jumps \"over\" the lazy\" dog";
var res = Regex.Replace(text, "(?<=^[^\"]*)\"|\"(?=[^\"]*$)", "\"\"\"");
Quick "brown fox jumps "over" the lazy" dog
Quick """brown fox jumps "over" the lazy""" dog