2014-05-15 225 views
-2

我找不到正則表達式<#anystring#>?如何匹配Regex中特定模式的所有匹配項?

例:<#SDA#>或<#32dwdwwd#>或之間<#和#的任意字符串的>

我試圖"<#[^<#]+#>"但這僅輸出第一次出現。

 string sample = "\n\n<#sample01#> jus some words <#sample02#> <#sample03#> just some words "; 
     Match match = Regex.Match(sample, "<#[^<#]+#>"); 
     if (match.Success) 
     { 
      foreach (Capture capture in match.Captures) 
      { 
       Console.WriteLine(capture.Value); 
      } 
     } 
+0

「<#[^<#]+#>」這僅輸出第一次出現。其實我不擅長正則表達式。剛剛開始。 – Carlos

+0

如果您有其他信息,請編輯您的問題。你的正則表達式看起來不錯,所以這是你如何調用你的正則表達式並處理結果的問題。顯示你的C#代碼(通過編輯你的問題!) – stema

+0

@卡洛斯更好,所以現在你的問題變得明顯。請顯示你使用正則表達式的代碼,你可能只需要調整一些選項。 – James

回答

2

您正在使用match()方法。嘗試閱讀documentation,你會看到,它只返回第一場比賽。

嘗試使用matches()方法,而是返回MatchCollection

這將是這個樣子(小心,沒有測試直接寫在這裏)

string sample = "\n\n<#sample01#> jus some words <#sample02#> <#sample03#> just some words "; 
    MatchCollection mc = Regex.Matches(sample, "<#(.*?)#>"); 
    foreach (Match m in mc) 
     { 
      Console.WriteLine(m.Groups[0]); 
     } 
    } 
+0

謝謝。正如我所說,我真的在正則表達式新。 20分鐘前開始。謝謝。 – Carlos

0

試試這個,它應該工作

修訂

<#(.*?)#>

  • 的點是,除了新行(\ n)的任何字符。
  • *表示0或更多。
  • The?被用來使其不合格。

source here

+0

它沒有工作。仍然只給出第一次出現.. – Carlos

+0

我更新了括號應該現在工作 – mosaad

+0

你見過編輯的問題?這不是使用正則表達式的問題。 – stema