2010-09-28 45 views
-1

我需要來標記以下標籤:如何使用正則表達式解析XML類標籤

{TagName attrib1=」value1」 attrib2=」value 3」}. 

我想編寫正則表達式來做到這一點,但麻煩的是,屬性值可以包含空格,所以我不能隨空間分裂。

+6

[你真的不應該嘗試用正則表達式解析XML](http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454# 1732454)。 – eliah 2010-09-28 14:54:42

+1

你需要一個真正的解析器。你可以使用'indexOf'自己編寫一個(畢竟它只是一個帶有堆棧的狀態機器),但更好的是使用解析器生成器,如Antlr:http://www.antlr.org/ – Anon 2010-09-28 15:06:42

+0

標記不是複合的而且這件事情就像它變得複雜一樣,所以我認爲它可能比完整的Xml更簡單一些...... – Dan 2010-09-28 15:38:03

回答

1

不能比這更明確提出:

http://www.codinghorror.com/blog/2009/11/parsing-html-the-cthulhu-way.html

請解釋爲什麼你需要正則表達式...

和,你沒有說你的首選語言什麼.. 。

假設的Perl:

$str = "{TagName attrib1=\"value1\" attrib2=\"value 3\"}"; 

if ($str =~ m/{(\w+)\s+(\w+)="(.*?)"\s+(\w+)="(.*?)"/) 
{ 
    print "tagname: $1\n"; 
    print "attrib: $2\n"; 
    print "value: $3\n"; 
    print "attrib: $4\n"; 
    print "value: $5\n"; 
} 

但是,再次,不要使用正則表達式!

+0

the classic post:http://stackoverflow.com/questions/1732348/regex-match-open-tags -except-xhtml-self-contained-tags/1732454 – bsamek 2010-09-28 15:09:14

+0

優先語言是java – Dan 2010-10-15 15:43:08