2010-09-07 7 views
0

Je crée un générateur de code dynamique et utilise des expressions régulières. Compte tenu de ce bloc de texteExpressions régulières Exclure d'une classe

##Properties 
          publiC#PropertyType# #NewProperty# 
          { 
           get; set; 
          } 
## 
##Events 
          public event #EventName#-#EventExt#; 
## 
          } 
          #endregion 

Je veux être en mesure d'extraire des blocs de texte, à savoir:

##Properties 
          publiC#PropertyType# #NewProperty# 
          { 
           get; set; 
          } 
## 

et

##Properties 
          publiC#PropertyType# #NewProperty# 
          { 
           get; set; 
          } 
## 

J'ai essayé d'utiliser ce ##[\S\s]+## comme mon expression, mais il prend les deux et les joindre en un seul. Donc je me demandais s'il y avait un moyen d'exclure les caractères "##" de la classe [\ S \ s] afin qu'elle ne soit pas reconnue. Existe-t-il un moyen de le faire?

Répondre

2

Essayez d'utiliser paresseux sur votre expression régulière:

##[\S\s]+?##

Cela correspondra le moins de caractères possible.

1

Essayez

##(?:[^#]|#(?!#))+##