2012-07-30 42 views
4

我正在尋找regex repalce命令來替換特定的字符串。假設我希望文本ss在HTML代碼中被替換爲<u>ss</u>。 所以,如果我的輸入爲<p style="">ss</p>我希望看到輸出<p style=""><u>ss</u></p>正則表達式替換爲字符串

但我不希望像

<b>Issues</b>字被替換像<b>I<u>ss</u>es</b>

,所以我需要把一個檢查,如果它是一個complte單詞或單詞的一部分。

我想regex.replace爲

">ss<" & > ss <

任何有這更好的解決辦法?

回答

1

更好的解決方案是使用HTML解析器庫,解析html並替換標籤。 結帳HTML Agility Pack

說了這麼多,如果你仍然堅持使用正則表達式,因爲你知道你的數據是在特定的格式,那麼下面的正則表達式應該能滿足您的需要。

[>]\s?ss\s?[<] 
  • [>]接近標籤
  • [<]是開放標籤
  • \ s是可選空格
  • ss是你不應該使用的模式
1

正則表達式來解析HTML,正則表達式是爲常規語言設計的,其中HTML無上下文。

我強烈建議一個HTML Dom Parser

2

撇開這正則表達式是不是與HTML使用的最佳工具的觀察,你可以使用\bss\b表達,以確保有一個單詞邊界前和後的字符串,你」重新匹配。

1
string input = "<p style="">ss</p> <b>Issues</b>"; 
    string pattern = "(?<=\>)ss(?=\<)"; 
    string replacement = "<u>ss</u>"; 
    Regex rgx = new Regex(pattern); 
    string result = rgx.Replace(input, replacement); 
    Console.WriteLine("Original String: {0}", input); 
    Console.WriteLine("Replacement String: {0}", result); 
0

不知道我究竟明白你想要什麼在這裏,但這個有什麼不對:

dataString = dataString.Replace(">ss<", "><u>ss</u><").Replace("> ss <", "><u> ss </u><"); 
1

什麼這樣一個簡單的解決方案:

public string ReplaceHtmlTagContent(string value, string search) { 
    return value.Replace(">" + search + "<", "><u>" + replace + "</u><") 
}