正则表达式删除和替换字符

时间:2015-03-24 10:57:04

标签: c# regex

我有以下

<option value="Abercrombie">Abercrombie</option>

我的文件大约有2000行,每行有不同的位置,我试图理解正则表达式,但遗憾的是我学到的东西都不会进去,我不确定这是否可行。

我想要做的是运行一个正则表达式,它将删除上面的HTML,这将留下以下内容

Abercrombie 

然后我想在前面加上特定数字的前缀,结果就是例如

2,Abercrombie 

这可能吗?

1 个答案:

答案 0 :(得分:1)

不要使用正则表达式,因为HTML不是常规语言。您可以使用Linq的XML解析器。如果要处理整个文件,可以替换内联元素:

int myNumber  = 2;
var html      = @"<html><body><option value=""Abercrombie"">Abercrombie</option><div><option value=""Forever21"">Forever21</option></div></body></html>";            
var doc       = XDocument.Load(new StringReader(html));

var options = doc.Descendants().Where(o => o.Name == "option").ToList();
foreach (var element in options)
{
    element.ReplaceWith(string.Format("{0},{1}", myNumber, element.Value));
}

var result = doc.ToString();

这给出了:

<html>
    <body>2,Abercrombie<div>2,Forever21</div></body>
</html>

如果您只想获取特定标记的文本,可以使用以下内容:

int myNumber  = 2;
var html      = @"<option value=""Abercrombie"">Abercrombie</option>";            
var doc       = XDocument.Load(new StringReader(html));
var element   = doc.Descendants().FirstOrDefault(o => o.Name == "option");
var attribute = element.Attribute("value").Value;
var result    = string.Format("{0},{1}", myNumber, attribute);

//result == "2,Abercrombie"