Perl Regexp修饰符" / d"和" / a"相互排斥

时间:2015-03-06 17:21:50

标签: regex xml perl

我正在尝试使用Perl从串口读取XML数据。 我得到了多个XML响应,有些是完整的,有些是一半的XML响应。在这之间,我需要检查xyz节点中存在的数据。为此,我编写了以下代码行

if($response =~ /((<data>)(.*)(</data>)/){
    # Process element here
    $data = $0;

}

但我得到错误Perl Regexp修饰符“/ d”和“/ a”是互斥的

请求建议我可以使用的任何解决方案。

此致 Jnaneswar

1 个答案:

答案 0 :(得分:2)

您必须在正则表达式中转义分隔符(此处为/)。

/(<data>)(.*?)(<\/data>)/s

另请注意:

  • 在你的表达中,还有一个开头括号。
  • .*对于你的文字中有两次</data>的案例,不合适。
  • /s允许.匹配换行符。