2010-10-28 12 views
6

en Böyle bir çok satırlı dize var diyelim:C# ile Regex'te "en az eşleşme" araması nasıl yapılır?

STARTFRUIT 
banana 
ENDFRUIT 

STARTFRUIT 
avocado 
ENDFRUIT 

STARTVEGGIE 
rhubarb 
ENDVEGGIE 

STARTFRUIT 
lime 
ENDFRUIT 

tüm meyve, hiçbir sebzeler aramak istiyorum. Onun yerine bana üç maçta bir dizi döndürmek yerine, bana birinci STARTFRUIT ve başlangıç ​​ve sonunda son ENDFRUIT kapsayan büyük bir eşleşme verir

MatchCollection myMatches = Regex.Matches(tbBlob.Text, "STARTFRUIT.*ENDFRUIT", RegexOptions.Singleline); 

foreach (var myMatch in myMatches) 
{ 
    Forms.MessageBox.Show(String.Format("Match: {0}", myMatch), "Match", Forms.MessageBoxButtons.OK, Forms.MessageBoxIcon.Information); 
} 

sorun: Ben bu deneyin. Maç aramayı "en aza indirmenin" bir yolu var mı? RegexOptions numaralı telefondan yardım göremiyorum. nicelik sonra

cevap

21

kullanın non-greedy modifier (soru işareti): soru işareti burada bunun anlamı niceleyicinin olarak kullanıldığında daha burada farklı bir anlamı olduğunu

 
"STARTFRUIT.*?ENDFRUIT" 
      ^
     add this 

Not "sıfır maç ya da bir ".

İlgili konular