Skip to main content
 首页 » 编程设计

c#之如何使用从一个文件到另一个文件的分组正则表达式内容

2024年02月27日30lyhabc

如何从一个文件中获取匹配的正则表达式组值并将其粘贴到另一个文件中 我试过这样的事情

var doc=File.ReadAllText(@"D:\Project\12345\database\xyz.txt"); 
            Regex r=new Regex(@"<ttl>(\w+)</ttl>"); 
            Match m=r.Match(doc); 
            string gr=m.Groups[1].Value; 
            File.WriteAllText(@"E:\Final\12345\2017\xyz.txt", File.ReadAllText(@"E:\Final\12345\2017\123.txt").Replace("<ce-title>[^<]+</ce-title>","<ce-title>"+gr+"</ce-title>")); 
            Console.WriteLine("Done"); 
            Console.ReadLine(); 

但由于某种原因它不起作用,我无法弄清楚哪里出了问题? 我基本上是在尝试获取第一个 <ttl> 中的内容一个文件中的元素并将该值粘贴到另一个文件中 <ce-title>使用正则表达式的元素。 注意:我知道这可以使用 xml/html 解析技术来完成,但我想知道如何使用正则表达式来完成这个简单的事情。

谁能帮我解决这个问题?

请您参考如下方法:

您正在使用 String.Replace()而不是 Regex.Replace .

重写你的代码如下:

var doc=File.ReadAllText(@"D:\Project\12345\database\xyz.txt"); 
var r = new Regex(@"<ttl>(\w+)</ttl>"); 
Match m=r.Match(doc); 
if (m.Success) 
{ 
     var gr = m.Groups[1].Value; 
     var rx = new Regex("<ce-title>[^<]+</ce-title>"); 
     File.WriteAllText(@"E:\Final\12345\2017\xyz.txt",  
          rx.Replace( 
               File.ReadAllText(@"E:\Final\12345\2017\123.txt‌​"),  // Input 
               string.Format("<ce-title>{0}</ce-title>", gr),     // Replacement 
               1                                                  // Number of occurrences 
          ) 
     ); 
} 
Console.WriteLine("Done"); 
Console.ReadLine(); 

自 gr只包含单词字符,可以安全使用 string.Format("<ce-title>{0}</ce-title>", gr)作为替代品。否则,如果需要支持任何字符,则需要使用 string.Format("<ce-title>{0}</ce-title>", gr.Replace("$", "$$")) .