-1

我如何为以下字符串编写正则表达式。“ShortCaption”和“Headline”中的所有内容都需要提取吗?

  <xs:element name ="ID" type ="xs:int" minOccurs ="1" maxOccurs ="1"/>     
  <xs:element name ="Type" type ="xs:string" minOccurs ="1" maxOccurs ="1"/>
  <xs:element name ="Language" type ="xs:string" minOccurs ="0" maxOccurs ="1"/>
  <xs:element name="LinkText" type ="xs:string" minOccurs ="0" maxOccurs ="1"/>
  <xs:element name="Headline" type ="xs:string" minOccurs ="0" maxOccurs ="1"/>
  <xs:element name="ShortCaption" type ="xs:string" minOccurs ="0" maxOccurs ="1"/>

谢谢,

4

2 回答 2

0

尝试使用 DOM 在 xml 中提取!链接到这个: http: //php.net/manual/en/book.dom.php

于 2013-02-25T18:40:03.357 回答
0

使用正则表达式来解析标记通常是不受欢迎的。但是,如果您对每一行使用正则表达式,并且可以确保每一行看起来像上面的示例(没有换行等),那么这将起作用:

my $xml =~ /^.*?name\s*=\s*"(Headline|ShortCaption)"\s*type\s*=\s*"(.*?)"\s*minOccurs\s*=\s*"(.*?)"\s*maxOccurs\s*=\s*"(.*?)".*$/

my $name = $1;
my $type = $2;
my $minOccurs = $3;
my $maxOccurs = $4;

我没有对此进行测试,但它非常基础,应该为您提供一个可以构建的示例。但是,我同意世界上几乎所有其他开发人员的观点……使用正则表达式进行标记是灾难的根源。

于 2013-02-25T18:45:34.953 回答