检查空XML节点的正则表达式是什么?

时间:2014-05-23 23:32:57

标签: regex

我得到一个xml节点;

<p:FirstAddressLine1></p:FirstAddressLine1>

我想重写该节点,如果它有一个空字符串/ null。我使用^$但它无法验证特定的xml节点是否包含空字符串。

任何人都知道,我在这里做错了什么?和正确使用的正则表达式?

1 个答案:

答案 0 :(得分:1)

我会使用类似以下regex

的内容
(?:<p:FirstAddressLine1>(?!<\/p))

使用Negative Lookahead,并匹配<p:FirstAddressLine1>后跟</p以外的任何内容。如果它在第一个&lt;&gt;之后直接看到</p它与字符串不匹配。

示例用法

use strict;
use warnings;

my @lines = <DATA>;

foreach (@lines) {

    if ( $_ =~ m/(?:<p:FirstAddressLine1>(?!<\/p))/ ) {
        print "The string is NOT empty\n";

    }
    else {
        print "The string is empty\n";
    }

}

__DATA__
<p:FirstAddressLine1></p:FirstAddressLine1>
<p:FirstAddressLine1>TEST</p:FirstAddressLine1>

<强> RESULT

The string is empty
The string is NOT empty