我有一个包含大量文本的标记文件,如下所示:
My markup file <title value="The title" /> and more text
and another title <title value="XXX" />The <text> blah blah blah
如何用新标题替换所有这些标题(可能使用正则表达式)?首先是几条规则:
value="xxxxx"
文字与标题无关。谢谢!
答案 0 :(得分:0)
在不知道您将拥有的各种值标题 ...您可以使用支持正则表达式的文本编辑器,如:notepad ++:
<title value="[A-Za-z ]*" />
作为你的正则表达式。如果您的标题不仅仅包含数字字符和空格,则需要更改 [A-Za-Z]
答案 1 :(得分:0)
认为应该这样做:
string output = Regex.Replace(txt,"<title value=\".*?\"","<title value=\"My new title\"");
编辑:如果您的标题标签有额外的参数,这也将替换它们,但保留额外的参数:
string output2 = Regex.Replace(txt, "<title(.*?)value=\".*?\"", "<title$1value=\"My new title\"");
答案 2 :(得分:0)
如果要在双引号内替换某些文本,可以执行以下操作:
string originalStr = "My markup file <title value=\"The title\" /> and more text and another title <title value=\"XXX\" />The <text> blah blah blah";
string replacedStr = Regex.Replace(originalStr, @"""[^""]+""", "\"NewText\"");
答案 3 :(得分:0)
您可以使用Named Capturing Groups和Substitutions来完成此操作,如下所示:
public static string ReplaceTitle(string input, string newTitle)
{
string findPattern = @"(?<prepend><title\s+value\s*=\s*\"")([^\""]*)(?<append>\"")";
string replacePattern = "${prepend}" + newTitle + "${append}";
return Regex.Replace(input, findPattern, replacePattern, RegexOptions.IgnoreCase);
}
这是一个测试上述情况的演示代码
using System.IO;
using System;
using System.Text.RegularExpressions;
public class Program
{
static void Main()
{
string input = "My markup file <title value=\"The title\" /> and more text and another title <title value=\"XXX\" />The <text> blah blah blah";
Console.WriteLine(ReplaceTitle(input, "NEWTITLE"));
}
public static string ReplaceTitle(string input, string newTitle)
{
string findPattern = @"(?<prepend><title\s+value\s*=\s*\"")([^\""]*)(?<append>\"")";
string replacePattern = "${prepend}" + newTitle + "${append}";
return Regex.Replace(input, findPattern, replacePattern, RegexOptions.IgnoreCase);
}
}