代码之家  ›  专栏  ›  技术社区  ›  Ryan Elkins

正则表达式:匹配不包含特定文本的HTML元素

  •  2
  • Ryan Elkins  · 技术社区  · 14 年前

    <object.*object>
    

    效果不错。现在我基本上需要做同样的事情,但前提是对象标签中的内容不在youtube上。我需要一个正则表达式模式,它将匹配以开头但不包含单词“youtube”的字符串。如果我需要这一点来处理所有可能的情况,我可能需要考虑更多的事情,但上面的工作应该为手头的工作做好准备。

    我一直在玩负面形象,但还没能让它发挥作用。以下是我尝试过的一些事情:

    <object.*(?!youtube).*object> -匹配所有对象标记,因为*是贪婪的

    <object.+?(?!youtube).+?object>
    
    <object(?!youtube)*object>
    

    2 回复  |  直到 14 年前
        1
  •  6
  •   Bart Kiers    14 年前

    尝试:

    (?s)<object((?!youtube).)*?object>
    
    1. (?s)
    2. <object object> 必须清楚
    3. (?!youtube). youtube 可以“看到”,如果是这种情况,正则表达式将匹配任何字符
    4. ((?!youtube).)*? 将不情愿地匹配[3]零次或多次(“不贪婪”)

        2
  •  0
  •   Igor Artamonov    14 年前

    让它不那么贪婪怎么样?:) <object.*?(?!youtube).*?object>