簡體   English   中英

我的 Regex.Replace 不起作用

[英]My Regex.Replace doesn't work

嘿,我目前正在嘗試替換字符串中的 html。 <strong>text</strong>需要是<b>text</b>等(我意識到b標簽被認為是過時的)

我知道我不應該使用正則表達式來解決這個問題,但這是目前我唯一的選擇

我的代碼:

//replace strong
text = Regex.Replace(text, "<strong>.*?</strong>", "<b>$1</b>");

//replace em
text = Regex.Replace(text, "<em>.*?</em>", "<i>$1</i>");

這里的問題是正則表達式替換了標簽並將文本設置為$1 如何避免這種情況? (順便說一句,我在 C# 中。)

$1將使用匹配中第一個捕獲的值。 但是你沒有在比賽中指定任何捕獲組,所以沒有任何東西可以用$1來代替。

使用(…)捕獲正則表達式:

text = Regex.Replace(text, "<strong>(.*?)</strong>", "<b>$1</b>");

請注意,以下答案只是一種解決方法; 寫一個正確的正則表達式更好。

var text = "<strong>asfdweqwe121</strong><em>test</em>";

text = text.Replace("<strong>", "<b>");
text = text.Replace("</strong>", "</b>");
text = text.Replace("<em>", "<i>");
text = text.Replace("</em>", "</i>");

您還可以考慮使用:

text = Regex.Replace(text, "<strong>(.*?)</strong>", "<b>$1</b>", RegexOptions.Singleline);

請注意, RegexOptions.Singleline是允許. 匹配換行符 (LF, \\x0A ) 字符,即. 模式默認無法匹配。

暫無
暫無

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

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