我有一个html字符串可以使用如下:
string html = new MvcHtmlString(item.html.ToString()).ToHtmlString();
我需要匹配两种不同类型的文本,尽管非常相似。我需要删除初始^^
并删除结束|^^
。然后,如果有多个客户端,我需要将^
分隔客户端更改为逗号(,)。
^^Client One- This text is pretty meaningless for this task, but it will exist in the real document.|^^
^^Client One^Client Two^Client Three- This text is pretty meaningless for this task, but it will exist in the real document.|^^
我需要能够匹配每个客户端并使其变为粗体。
Client One - 此文本对于此任务来说毫无意义,但它将存在于真实文档中。
客户端1 ,客户端2 ,客户端3 - 此文本对此任务毫无意义,但它将存在于真实文档中
一个很好的堆栈溢出用户提供了以下内容,但是当我在在线正则表达式测试器上测试时,我无法使其工作或找到任何匹配。
const string pattern = @"\^\^(?<clients>[^-]+)(?<text>-.*)\|\^\^";
var result = Regex.Replace(html, pattern,
m =>
{
var clientlist = m.Groups["clients"].Value;
var newClients = string.Join(",", clientlist.Split('^').Select(s => string.Format("<strong>{0}</strong>", s)));
return newClients + m.Groups["text"];
});
我是正则表达式的新手,所以感谢任何帮助。
答案 0 :(得分:2)
我是C#的新手,如果我犯了新手的错误,请原谅我:)
const string pattern = @"\^\^([^-]+)(-[^|]+)\|\^\^";
var temp = Regex.Replace(html, pattern, "<strong>$1</strong>$2");
var result = Regex.Replace(temp, @"\^", "</strong>, <strong>");
我正在使用$1
,尽管MSDN对使用该语法引用子组含糊不清。
修改:如果-
后的文字可能包含^
,则可以执行此操作:
var result = Regex.Replace(temp, @"\^(?=.*-)", "</strong>, <strong>");