我有一组html文件,我想通过替换页眉和页脚进行修改。每个文件的内容是不同的,我想使用一个正则表达式(或类似如果RE不能处理多行查询)。如何使用标准页眉和页脚修改/更新一组html文件
作为一个例子,一个修改我要提出的是,<HTML>并与一个标准的头< /头>之间更换的一切。
这可以用正则表达式来完成吗?您将使用什么方法执行批量搜索并在C#中像这样替换?
你能提供一个匹配多行的正则表达式的例子吗?
我有一组html文件,我想通过替换页眉和页脚进行修改。每个文件的内容是不同的,我想使用一个正则表达式(或类似如果RE不能处理多行查询)。如何使用标准页眉和页脚修改/更新一组html文件
作为一个例子,一个修改我要提出的是,<HTML>并与一个标准的头< /头>之间更换的一切。
这可以用正则表达式来完成吗?您将使用什么方法执行批量搜索并在C#中像这样替换?
你能提供一个匹配多行的正则表达式的例子吗?
那么简单的答案是,是的。
正则表达式确实可以帮助你,但你需要一个能够处理多个文件的工具。目前我无法推荐任何内容,请尝试使用谷歌搜索“多个文件搜索和替换”。正则表达式可以处理多行或单行匹配。
我用记事本+ +,可以你想要做一个搜索/多个文件(打开或目录树中)更换什么样的事,不是它的主要目的,但它的作品。
困难的部分是定义你的“匹配”确保要挑选出您需要保留您有您可以在“替换”表达式中使用适当的捕获组的详细信息。
所以,再次,是的,它可以帮助,但你的问题是非常高的水平。
对于C#部分,一旦您定义了正则表达式就很简单。
static void Main()
{
// Remove everything (by commenting out) everything between HTML
// and the end of the HEAD tag.
string matchRegex = "<html[^>]*>(.*?)</head>";
string replaceExpression = "<html> <!-- \0 </head> -->";
string pattern = "*.html";
using (DirectoryInfo di = new DirectoryInfo(.))
{
foreach (FileInfo fi in di.GetFiles(pattern))
{
using (StreamReader sr = fi.OpenText())
{
// Going from memory here, may need to use a TextReader...
string content = fi.ReadToEnd();
// Treat as single-line so that the match can span
// several lines.
string newContent = Regex.Replace(content,
matchRegex,
replaceExpression,
RegexOptions.Singleline);
// Write-out/overwirte your new file here....
}
}
}
}
你会发现这个页面是有用的,在里面,有人试图写一个正则表达式匹配的意见,然后处理多行注释等,这显示了正则表达式的思维过程。 Finding Comments in source code。替换部分很简单,将一个捕获组放入并在替换字符串中引用组/名称!
我打算编写一些C#代码来循环浏览html文件的集合,所以不会为此使用文本编辑器。你有没有一个例子说明你如何执行一个可以匹配多行的RE? – NickGPS 2009-11-06 11:39:26
感谢您的帮助。我编辑了这个问题,因为我没有编码<和>,所以他们被剥离出来,这使得问题有点模糊。 我知道如何编写一个循环,我在寻找的是一个可以匹配多行的正则表达式的例子吗? – NickGPS 2009-11-06 11:45:19
传入RegexOptions.Multiline或RegexOptions.Singleline以更改^和$的行为。 Multiline =“更改^和$的含义,以便它们分别匹配任何行的开头和结尾,而不仅仅是整个字符串的开头和结尾。” – 2009-11-06 13:53:10