必须有一种更简单的方法来进行正则表达式替换

时间:2016-02-01 23:55:46

标签: c# regex replace

我想要做的是仅在字符串符号直接位于字符串之前(即#stackoverflow)从字符串中删除主题标签。这就是我正在做的事情:

var paragraph = "Cum sociis natoque penatibus et magnis dis parturient montes, nascetur " + 
    "ridiculus mus. Aliquam bibendum egestas tortor et lobortis. Curabitur malesuada " + 
    "hendrerit volutpat. Aenean commodo finibus faucibus. Sed tincidunt quam eget erat " + 
    "interdum, non ornare est semper. Aliquam ac orci condimentum, pharetra elit eu, #cursus " + 
    "felis. Ut risus mi, tincidunt in #condimentum nec, ornare vel enim. Curabitur nunc est, " + 
    "maximus at ultricies sit #amet, tincidunt eget lectus. Mauris in erat ut lectus varius " + 
    "hendrerit ut id neque. Fusce ultricies efficitur mauris, ac vestibulum purus bibendum sed. " + 
    "Nunc a ultricies eros.";
var expression = @"(?<=\s|^)#(\w*[A-Za-z_]+\w*)";
Regex regex = new Regex(expression);
MatchCollection matches = regex.Matches(paragraph);
foreach(Match m in matches)
{
    paragraph = paragraph.Replace(m.Groups[0].Value, m.Groups[1].Value);
}

有没有更好的方法将第一组匹配中的值替换为第二组中的值?

1 个答案:

答案 0 :(得分:1)

您可以使用Regex.Replace代替迭代MatchCollection

paragraph = regex.Replace(paragraph, m => m.Groups[1].Value);