Regex 需要一个正则表达式大师吗

Regex 需要一个正则表达式大师吗,regex,glossary,Regex,Glossary,我试图编写一个脚本,解析一块HTML,并根据给定的术语表匹配单词。如果找到匹配项,则将术语包装在中并提供定义 它工作正常--除了两个主要缺点: 它匹配属性中的文本 它匹配已在由嵌套链接创建的标记中的文本 有没有办法让我的正则表达式只匹配不在属性中,也不在标签中的单词 以下是我正在使用的代码,以防相关: foreach(Glossary::map() as $term => $def) { $search[] = "/\b($term)\b/i"; self::$lookup[str

我试图编写一个脚本,解析一块HTML,并根据给定的术语表匹配单词。如果找到匹配项,则将术语包装在
中并提供定义

它工作正常--除了两个主要缺点:

  • 它匹配属性中的文本
  • 它匹配已在由嵌套链接创建的
    标记中的文本
  • 有没有办法让我的正则表达式只匹配不在属性中,也不在标签中的单词

    以下是我正在使用的代码,以防相关:

    foreach(Glossary::map() as $term => $def) {
      $search[] = "/\b($term)\b/i";
      self::$lookup[strtoupper($term)] = $def;
    }
    
    return preg_replace_callback($search, array(&$this,'replace'),$this->content);
    
    “不要用正则表达式这样做。”

    使用HTML解析器,然后在识别HTML元素时对其内容应用正则表达式。这将允许您轻松地对HTML结构的许多不同变体进行操作,这些变体有效或无效,而不需要大量粗糙且难以维护的正则表达式

    “不要对正则表达式执行此操作。”

    使用HTML解析器,然后在识别HTML元素时对其内容应用正则表达式。这将允许您轻松地对HTML结构的许多不同变体进行操作,这些变体有效或无效,而不需要大量粗糙且难以维护的正则表达式


    HTML解析是一个有趣的研究课题。你说HTML是什么意思?有标准(相当多),也有网页。大多数研究人员不使用正则表达式来解析HTML

    HTML解析是一个有趣的研究课题。你说HTML是什么意思?有标准(相当多),也有网页。大多数研究人员不使用正则表达式来解析HTML,我个人更喜欢。

    我个人更喜欢。

    下面是“不要用正则表达式解析HTML”的答案……编辑:应该是“不在标记中”。。HTML被剥离了。如果文本出现在除锚定标记以外的任何标记中都可以。我修复了代码块。当你有你想要显示的内联HTML时,用backticks环绕:`不要用正则表达式这样做。使用一些标记来标记术语,然后用链接(用解析器)替换标记的术语。要真正回答这个问题,没有这样的正则表达式。下面是“不要用正则表达式这样做”的答案…编辑:应该是“不在标记中”。。HTML被剥离了。如果文本出现在除锚定标记以外的任何标记中都可以。我修复了代码块。当你有你想要显示的内联HTML时,用backticks环绕:`不要用正则表达式这样做。使用一些标记来标记术语,只需使用链接(使用解析器)替换标记的术语即可,不,没有这样的正则表达式。你是如何链接到StackOverflow上关于这个问题的另一个问题而没有链接到这个问题的:?没有链接到@Jason,你觉得什么都好吗?因为这可能很有趣,它实际上并没有帮助OP完成任何事情。你是如何链接到关于StackOverflow的另一个关于这个问题的问题而没有链接到这个问题的:?你不链接到@Jason就想做什么吗?因为这可能很有趣,但实际上并没有帮助OP完成任何事情。