繁体   English   中英

用正则表达式替换C#正则表达式

[英]C# Regex replace with Regex

我有一个问题,我想用某些文本中的“ {{de | <text>}}}”替换每个“ [[::: <text>]]””。 我尝试过

output = Regex.Replace(input, "[[:de:(.*)]]", "{{de|(.*)}}");

但它不会复制<text>。 我没有其他想法如何正确地替换它。 希望您能够帮助我。

使用惰性点模式和反向引用并转义[符号:

output = Regex.Replace(input, @"\[\[:de:(.*?)]]", "{{de|$1}}");

如果de:]]之间的文本可以包含换行符,请使用RegexOptions.Singleline修饰符。

参见regex演示

在此处输入图片说明

如果将所有内容封装在组中,则可以使用MatchEvaluator。 在线尝试

public static void Main()
{
    var input = "[[:de:Hello World]]";
    var pattern = @"(\[\[:de:)(.+)(\]\])";
    var output = Regex.Replace(input, pattern, m => "{{de|" +  m.Groups[2].Value + "}}");
    Console.WriteLine(output);
}

产量

{{de|Hello World}}

您真的需要正则表达式吗? 我认为您只能使用字符串替换方法;

output = input.Replace("[[:de:(.*)]]", "{{de|(.*)}}");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM