什么应该是正则表达式

时间:2013-02-25 18:37:08

标签: regex

如何为以下字符串编写正则表达式。 “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"/>

谢谢,

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分: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;

我没有对此进行测试,但它非常基础,应该给你一个建立的例子。但是,我同意世界上几乎所有其他开发人员......使用正则表达式进行标记是一种灾难。