2010-03-11 74 views
-4

我需要的是这样的:如何使用Perl中的正则表达式匹配XML标签和属性?

/<[\w\d]+ ([\w\d]+\=[w\d])+\/>/ 

东西,将匹配多个属性键/值对。那可能吗?

+6

'<![CDATA [<我= “而不是” XML = “标签”/>]]><! - <我:既不/> - >' – kennytm 2010-03-11 16:50:44

+5

http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454 – Jake 2010-03-11 17:50:39

+2

@Ether:其实你仍然可以用Perl正则表达式解析XML ,因为Perl的正则表达式也不是常规的;)但是这是一个要完成的任务。 – codeholic 2010-03-12 15:12:24

回答

10

使用XML解析器可以获得更多成功,例如,XML::Parser。使用正则表达式解析XML非常困难(不可能?),除非您的用例不重要,否则正确的XML解析器是可靠的解决方案。

+4

不可能没有问号。 XML不是一种常规语言。当然,“正则表达式”的一些实现实际上匹配非常规语言,但这是另一回事。 – 2010-03-11 17:56:35

6

对于有限范围的有效XML可能是可能的。如果您试图解析XML,我强烈建议您使用解析器,而不要尝试使用正则表达式。 XML::Twig是CPAN提供的一个很好的通用解析器。

如要进一步了解,也看到:XML parsing vs Regular expressions

相关问题