You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用正则表达式将连续3个及以上<br />替换为2个?

问题:批量替换连续3个及以上的<br />为2个

我需要把字符串里3个及以上连续的<br />替换成2个<br />。之前用正则e{2,}能把连续2个及以上的字母e替换成星号,但试了下面几个正则处理<br />都失败了:

Dim strInput As String = "Thee <br /><br /><br /> brown fox jumped over the lazy dog."
Label1.Text = Regex.Replace(strInput, "\b<br />{2,}\b", "*")
Label1.Text = Regex.Replace(strInput, "\b<br />\b{2,}", "*")
Label1.Text = Regex.Replace(strInput, "\b<br />\b {2,}", "*")

解决方案

方法一:直接用正则匹配处理

你之前的问题出在\b的使用上——\b是单词边界,<br />里的<、>等符号不属于单词字符,这个边界匹配会失效,导致正则找不到目标内容。

正确的正则应该直接匹配连续2次及以上的<br />,然后替换成固定的2个<br />(这样3个及以上的连续标签都会被压缩成2个):

Dim strInput As String = "Thee <br /><br /><br /> brown fox jumped over the lazy dog."
Label1.Text = Regex.Replace(strInput, "(<br />){2,}", "<br /><br />")

方法二:占位符中转处理

如果觉得直接写正则匹配HTML标签容易出错,可以用占位符中转:先把所有<br />换成一个唯一标识,处理连续重复后再替换回去:

Dim strInput As String = "Thee <br /><br /><br /> brown fox jumped over the lazy dog."
' 1. 替换所有<br />为占位符
Dim tempStr As String = strInput.Replace("<br />", "[HTML-Linebreak]")
' 2. 把连续2个及以上的占位符替换成2个
tempStr = Regex.Replace(tempStr, "(\[HTML-Linebreak\]){2,}", "[HTML-Linebreak][HTML-Linebreak]")
' 3. 替换回<br />
Label1.Text = tempStr.Replace("[HTML-Linebreak]", "<br />")

内容的提问来源于stack exchange,提问作者user1946932

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 14:48:20