代码之家  ›  专栏  ›  技术社区  ›  user1946932

正则表达式:删除连续两个以上的<br>?

  •  0
  • user1946932  · 技术社区  · 10 月前

    在字符串中,我想替换任何出现的:

    <br /><br /><br /> (or more) 
    

    与:

    <br /><br />
    

    这适用于将字母e连续出现2次或多次替换为星号:

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

    给:

    Th* brown fox jumped over the lazy dog.
    

    这些正则表达式不适用于用星号替换两个或多个连续出现的HTML断点:

    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,}", "*")
    

    有人能给出一个有效的语法吗?

    (如果更容易的话,我可以在执行代码之前用[HTML Linebreak]临时替换字符串中所有出现的HTML换行符。然后我可以在之后将它们替换回来。)

    2 回复  |  直到 10 月前
        1
  •  3
  •   Tran Quoc Bao    10 月前

    试试看,它对我奏效了: Regex.Replace(strInput, "(<br\s*/?>\s*){3,}", "<br /><br />")

        Dim strInput As String = "Thee <br /><br /><br /><br /><br /><br /> brown fox jumped over the lazy dog."
        Console.WriteLine(Regex.Replace(strInput, "(<br\s*/?>\s*){3,}", "<br /><br />"))
    
        2
  •  2
  •   SamPaul Isaac    10 月前

    Label1.Text = Regex.Replace(strInput, "(<br\s*/?>\s*){2,}", "<br /><br />")

    • 这可以处理以下变化
      标签,包括那些没有斜线和具有不同空白模式的标签,使其更加灵活。
    • 它始终减少两个或多个序列
      标签到 正好两个,确保更清晰的HTML输出。