2011-05-20 43 views
0

我有複雜的字符串的一個特殊問題:C#Regex.Split

字符串模式:

 Description,Title,ContentFooterLeft[JE_Boxes: Identifier,Box,Namespace,Title,Channels,PriorityChannels,ForceChannel,SingleQuery,Template,Elements[JE_Example: Lead],LastNews[JE_Article: Lead, Galeria [JE_Gallery: Title,Banner [JE_Banner: Title],],],],Keywords 

樹模式:

Description, 
Title, 
ContentFooterLeft 
    [ 
     JE_Boxes: 
       Identifier, 
       Box, 
       Namespace, 
       Title, 
       Channels, 
       PriorityChannels, 
       ForceChannel, 
       SingleQuery, 
       Template, 
       Elements 
        [ 
         JE_Example: 
           Lead 
        ], 
       LastNews 
        [ 
         JE_Article: 
           Lead, 
           Galeria 
            [ 
             JE_Gallery: 
               Title, 
               Banner 
                [ 
                 JE_Banner: 
                   Title 
                ], 
            ], 
        ], 
    ], 
Keywords 

我與Regex.Split客觀其像這個:

1º[步驟]通話功能:

Regex.Split("Description,Title,ContentFooterLeft[JE_Boxes: Identifier,Box,Namespace,Title,Channels,PriorityChannels,ForceChannel,SingleQuery,Template,Elements[JE_Example: Lead],LastNews[JE_Article: Lead, Galeria [JE_Gallery: Title,Banner [JE_Banner: Title],],],],Keywords", "Regex expression") 

1º結果:

Description 
Title 
ContentFooterLeft[JE_Boxes:Identifier,Box,Namespace,Title,Channels,PriorityChannels,ForceChannel,SingleQuery,Template,Elements[JE_Example: Lead],LastNews[JE_Article: Lead, Galeria [JE_Gallery: Title,Banner [JE_Banner: Title],],],] 
Keywords 

2º[步驟]呼叫功能:

Regex.Split("ContentFooterLeft[JE_Boxes:Identifier,Box,Namespace,Title,Channels,PriorityChannels,ForceChannel,SingleQuery,Template,Elements[JE_Example: Lead],LastNews[JE_Article: Lead, Galeria [JE_Gallery: Title,Banner [JE_Banner: Title],],],]", "Regex expression") 

2º結果:

JE_Boxes 
Identifier 
Box 
Namespace 
Title 
Channels 
PriorityChannels 
ForceChannel 
SingleQuery 
Template 
Elements[JE_Example: Lead] 
LastNews[JE_Article: Lead, Galeria [JE_Gallery: Title,Banner [JE_Banner: Title],],] 

3º[步驟]呼叫功能:

Regex.Split("Elements[JE_Example: Lead]", "Regex expression") 
Regex.Split("LastNews[JE_Article: Lead, Galeria [JE_Gallery: Title,Banner [JE_Banner: Title],],]", "Regex expression") 

3º結果:

JE_Example 
Lead 

AND

JE_Article 
Lead 
Galeria [JE_Gallery: Title,Banner [JE_Banner: Title],] 

4º[步驟]呼叫功能:

Regex.Split("Galeria [JE_Gallery: Title,Banner [JE_Banner: Title],]", "Regex expression") 

4º結果:

JE_Gallery 
Title 
Banner [JE_Banner: Title] 

5°[步驟]呼叫功能:

Regex.Split("Banner [JE_Banner: Title]", "Regex expression") 

5º結果:

JE_Banner 
Title 

明顯,當我知道的常規(或多個)表達(S),我將在遞歸方法使這個... 對不起,我的長文本,但這是最好的方式來提出我的問題...

+2

這是很多細節,但我恐怕找不到問題所在。你能澄清嗎? – Mat 2011-05-20 11:17:05

回答

1

我認爲在這種情況下,它可能比正則表達式更容易編寫解析器。您可以使用Irony,這是一個優秀且易於使用的庫。

+1

謝謝,這是我的「你知道嗎?」當下的時刻:) – 2011-05-20 11:43:40