如何从一个文件中获取匹配的正则表达式组值并将其粘贴到另一个文件中 我尝试过这样的事情
<transportSender name="jms" class="org.apache.axis2.transport.jms.JMSSender"/>
但由于某种原因它不起作用,我无法弄清楚出了什么问题?
我基本上试图从一个文件中获取第一个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>
元素。
注意:我知道这可以使用xml / html解析技术完成,但我想知道如何使用正则表达式做这个简单的事情。
有人可以帮我吗?
答案 0 :(得分:3)
您使用的是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("$", "$$"))
。