簡體   English   中英

正則表達式匹配html字符串中的動態單詞

[英]Regex matching dynamic words within an html string

我有一個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.|^^

我需要能夠匹配每個客戶端並使其變得大膽。

客戶端1 - 此文本對於此任務而言毫無意義,但它將存在於真實文檔中。

客戶端一客戶端二客戶端三 - 此文本對於此任務而言毫無意義,但它將存在於真實文檔中。

一個很好的堆棧流用戶提供了以下但我無法讓它工作或找到任何匹配我在一個在線正則表達式測試器上測試它。

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"];
                                });

我是正則表達式的新手,所以任何幫助都表示贊賞。

我是C#的新手,請原諒我,如果我犯了菜鳥的錯誤:)

const string pattern = @"\^\^([^-]+)(-[^|]+)\|\^\^";

var temp = Regex.Replace(html, pattern, "<strong>$1</strong>$2");
var result = Regex.Replace(temp, @"\^", "</strong>, <strong>");

雖然MSDN對使用該語法引用子組很模糊,但我使用的是$1

編輯:如果可能的話,經過文-包含^ ,你可以這樣做:

var result = Regex.Replace(temp, @"\^(?=.*-)", "</strong>, <strong>");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM