簡體   English   中英

C#Regex替換每行中第一個和最后一個雙引號

[英]C# Regex replace the first and last occurrence of double quote in each line

有一個多線字符串,帶有未轉義的雙引號,可防止對字符串進行解析。

字符串示例:

ns:common.topic.description "1942: A Love Story est un film indien r\éalis\é par Vidhu Vinod Chopra sorti en salles le 15 juillet 1994. Il met en vedette Anil Kapoor, Manisha Koirala et Jackie Shroff. Le long m\étrage est un succ\ès moyen au box-office mais lance la carri\ère de Manisha Koirala."@fr; ns:common.topic.description "1942: A Love Story to bollywoodzki dramat mi\łosny i film akcji zrealizowany w 1993 roku przez Vidhu Vinod Chopra, autora takich film\ów jak Misja w Kaszmirze, czy Eklavya: The Royal Guard. W rolach g\ł\ównych Anil Kapoor i Manisha Koirala', w drugoplanowych Jackie Shroff, Anupam Kher, Danny Denzongpa i Pran. Film by\ł hitem jako musical. Premiera jego odby\ła si\ę ju\ż po \śmierci nagrodzonego potem kompozytora weterana Bollywoodu Rahul Dev Burman. To historia mi\łosna. Jej t\łem jest rok 1942, w kt\órym Gandhi has\łem "Quit India!" wezwa\ł Anglik\ów do odej\ścia z kraju po 200-letniej okupacji. Syn s\łu\ż\ącego Anglikom Indusa zakochuje si\ę wc\órce bojownika o wolno\ś\ć kraju."@pl;

我已經嘗試過這段代碼來替換"在字符串的每一行上的第一次和最后一次出現" (代碼很糟糕但不起作用,只是不知道其他方法來做所需的事情):

var freebaseFixedRdfString = Regex.Replace(freebaseFixedRdfString, "\\"", delegate(Match match) { bool first = match.Index == 1; bool last = match.NextMatch().Index == 0; if (first || last) return "\\"\\"\\""; else return match.Value; }, RegexOptions.Compiled | RegexOptions.Multiline);

如何使用正則表達式替換第一個和最后一個"要替換為"""

如果要在初始位置或最后位置替換引號,則不需要正則表達式。 但是,在您的示例中,引號不在文本行的初始位置或最后位置。

以下是如何執行此操作的方法:

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

正則表達式使用lookahead和lookbehind構造來替換引用

  • 行的開頭和此引號之間沒有其他引號,或
  • 這一行與行尾之間沒有其他引號。

演示。

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
^"|"$

您可以使用它來替換第一個和最后一個"參見演示。

http://regex101.com/r/yP3iB0/7

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM