C#用正则表达式替换正则表达式
我有一个问题,我想在一些文本中用“{de}}”替换每个“[[:de:]]”。我试过了C#用正则表达式替换正则表达式,c#,regex,C#,Regex,我有一个问题,我想在一些文本中用“{de}}”替换每个“[[:de:]]”。我试过了 output = Regex.Replace(input, "[[:de:(.*)]]", "{{de|(.*)}}"); 但它并没有照搬法律。 我不知道如何正确地替换它。 希望您能帮助我。使用惰性点模式和反向引用,并转义[符号: output = Regex.Replace(input, @"\[\[:de:(.*?)]]", "{{de|$1}}"); 如果de:和]之间的文本可能包含换行符,请使用Re
output = Regex.Replace(input, "[[:de:(.*)]]", "{{de|(.*)}}");
但它并没有照搬法律。
我不知道如何正确地替换它。
希望您能帮助我。使用惰性点模式和反向引用,并转义
[
符号:
output = Regex.Replace(input, @"\[\[:de:(.*?)]]", "{{de|$1}}");
如果de:
和]
之间的文本可能包含换行符,请使用RegexOptions.Singleline
修饰符
看
如果您将所有内容封装在组中,则可以使用MatchEvaluator 输出
{{de|Hello World}}
你真的需要正则表达式吗?我认为您只能使用字符串替换方法
output = input.Replace("[[:de:(.*)]]", "{{de|(.*)}}");
使用String.Replace。如果您不想让它将
“[[:de:(.*)]”
视为正则表达式,请不要要求它这样做。匹配计算器可以保存以用于更复杂的场景,这里的替换反向引用就足够了。贪心点还会弄乱一行中包含多个匹配项的输出。@WiktorStribiżew我同意。另外,有关.NET替换反向引用的详细信息,请参阅。您错过了模式前面的@
。@ALOISG:当然,修复了。(.*)
是一个正则表达式。OP希望将[[:de:Hello World]]
替换为{{de|Hello World}
。
output = input.Replace("[[:de:(.*)]]", "{{de|(.*)}}");