c# - 正则表达式替换内部

标签 c# regex

好吧,我有这段代码:

        StreamReader sr = new StreamReader(@"main.cl", true);
        String str = sr.ReadToEnd();
        Regex r = new Regex(@"&");
        string[] line = r.Split(str);

        foreach (string val in line)
        {
            string Change = val.Replace("puts","System.Console.WriteLine()");
            Console.Write(Change);
        }

如您所见,我正在尝试用 Console.WriteLine(content) 替换 puts (content) 但它需要正则表达式,而且我没有找到一篇关于如何实现的好文章做这个。

基本上,将 * 作为即将到来的值,我想这样做:

string Change = val.Replace("puts *","System.Console.WriteLine(*)");

然后,如果我收到:

puts "Hello World";

我想得到:

System.Console.WriteLine("Hello World");

最佳答案

您需要使用 Regex.Replace使用 capturing group 捕获部分输入并将捕获的匹配项包含到输出中。示例:

Regex.Replace(
    "puts 'foo'",                    // input
    "puts (.*)",                     // .* means "any number of characters"
    "System.Console.WriteLine($1)")  // $1 stands for whatever (.*) matched

如果输入总是以分号结尾,您可能希望将该分号移到 WriteLine 括号之外。一种方法是:

Regex.Replace(
    "puts 'foo';",                   // input
    "puts (.*);",                    // ; outside parens -- now it's not captured
    "System.Console.WriteLine($1);") // manually adding the fixed ; at the end

如果您打算改编这些示例,最好先查阅技术引用资料;你可以找到一个非常好的here .

关于c# - 正则表达式替换内部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23737723/

相关文章:

c# - MVC 阻止更新某些字段

c# - 高级 System.Transactions 调试

c# - WCF 客户端连接问题

javascript - 替换符合条件的括号

java - 正则表达式可选组 |一开始不工作

ruby - 如何编写正则表达式以仅查找四位数的数字?

c# - 保证 Dispose 被称为 "when the process is ending"

javascript - 在 smarty 或 javascript/jQuery 中匹配特定单词后 chop 字符串

java - 仅在空格或破折号上拆分字符串。 Java小程序

c# - 我希望能够使用 lambda 表达式来指定要通过 wcf 服务返回的值范围