2011-05-20 42 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