問題
輸入字串包含 HTML 標籤,需提取純文字內容:
string str = "<body><b>abcdefg<html><a>連結123</a>456中文。";
// 期望輸出:"abcdefg連結123456中文。"
解決方案
string clean = Regex.Replace(str, "<[^>]*>", "");
正則解析
| 模式 | 含義 |
< | 匹配左尖括號 |
[^>]* | 匹配任意非右尖括號字元(貪婪) |
> | 匹配右尖括號 |
進階版本:處理跨行、註解、Script/Style 內容
// 更完整的 HTML 清理
string clean = Regex.Replace(html,
@"<script[^>]*>.*?</script>|<style[^>]*>.*?</style>|<!--.*?-->|<[^>]*>",
"",
RegexOptions.Singleline | RegexOptions.IgnoreCase);
效能建議
- 預編譯正則:
static readonly Regex HtmlTagRegex = new Regex("<[^>]*>", RegexOptions.Compiled);
- 大量處理時考慮
HtmlAgilityPack 等專用解析器,正則無法正確處理巢狀/不完整 HTML
適用場景對比