找到里面有文字的标签

时间:2016-12-01 09:07:08

标签: php regex preg-match

我有这个文字字符串

<div><div>Content</div><div><span>Searching</span></div></div>

我正在搜索其中包含文字div的{​​{1}}标记。所以我需要匹配

的正则表达式
Searching

我得到的最近的是

<div><span>Searching</span></div>

但它匹配第一个<div>(.*?)Searching(.*?)<\/div> ,结果是

div

2 个答案:

答案 0 :(得分:0)

使用否定前瞻应该为你做到:

<div>((?:(?!<div>).)*)Searching(.*?)<\/div>

See it here at regex101

答案 1 :(得分:0)

你应该试试X-path, 如果这个问题放在Perl上,那么我肯定会帮助你,但我会给你Perl代码可能对你有帮助

use XML::XPath;
use XML::XPath::XMLParser;

my $dir = 'd:/00Tools/Testing/gui';  #set any dir path
    foreach my $grep_file (glob("$dir/*.htm"))  # get all .htm file inside folder
    {
        my $xp = XML::XPath->new(filename => $grep_file);
        my $nodeset = $xp->find('/html/body/div//div/span'); # find span in this situation
        foreach my $node ($nodeset->get_nodelist)
        {
            my $final_th_node = XML::XPath::XMLParser::as_string($node);
            if ($final_th_node =~ /<span>Searching<\/span>/)    #test our conditon
                {
                    print "true";
                }
            else
                {
                    print "false";
                }

        }
    }