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

正则表达式一行中的正匹配和负匹配

  •  0
  • user869375  · 技术社区  · 6 年前

    我要匹配所有的线条 asp:下拉列表 不包含类

    以下是我目前掌握的情况:

    ^((\b<asp:DropDownList\b)*(?!selectpicker).)*$
    

    我的测试字符串是:

    <asp:DropDownList class="form selectpicker">
    <asp:DropDownList class="selectpicker">
    <asp:DropDownList class="form">
    <asp:TextBox class="selectpicker">
    <asp:TextBox class="form">
    

    我只想从列表中的第三项,因为这是唯一的DropDownList标签不包含类。

    2 回复  |  直到 6 年前
        1
  •  1
  •   CertainPerformance    6 年前

    ^<asp:DropDownList(?!.*class="[^"]*selectpicker[^"]*").*>$
    

    它使用负向前看来确保 class selectpicker . (也就是说,在大多数情况下,最好使用实际的XML解析器)

    https://regex101.com/r/ghhAL0/1

        2
  •  1
  •   wp78de    6 年前

    下面是一个使用 tempered greedy token :

    <asp:DropDownList (?:(?!class="[^"]*selectpicker[^"]*").)*>
    

    它匹配任何不包含该模式的内容 class="[^"]*selectpicker[^"]*" .

    .NET Regex Demo