2012-11-20 89 views
0

我想用來從行的文本正則表達式C#正則表達式

如:

string xyz = "text/plain; charset=US-ASCII; name=\"anythingfile.txt\""; 

,我想從該行

意味着我取anythingfile.txt想要創建匹配模式的正則表達式name =「」並在雙引號之間取字符串 我試過這個

regex re= new regex(@"name="\"[\\w ]*\""") 

但沒有得到正確的結果.... PLZ幫助我。

+0

可能會更容易,如果你使用普通的字符串字面量,而不是逐字的,因爲你需要做逃跑呢。 –

回答

1

試試這個正則表達式,

(?<=name="").*(?="") 
+0

完美的感謝很多....你能告訴我如何/在哪裏學習regualr表達? – user1619672

+0

[MSDN](http://msdn.microsoft.com/en-us/library/az24scfc.aspx)是一個好開始。 –

+1

@ user1619672 this iste:http://www.regular-expressions.info/tutorial.html –

1

你真的需要正則表達式?簡單的字符串操作可能是不夠的:

var NameValue = xyz.Split(';') 
        .Select(x => x.Split('=')) 
        .ToDictionary(y => y.First().Trim(), y => y.LastOrDefault()); 
+0

使其過於複雜。也從來沒有說過,它會以';'結尾' – Anirudha

+1

這些不是'簡單'的字符串操作,你正在對字符串運行一個完整的查詢;) –

+0

@ Fake.It.Til.U.Make.It很可能來自Http Headers,我也從來沒有認爲它會以';'結尾;但';'是一個分隔符char。 –

0

最好的方法是使用一個命名組:

using System; 
using System.Text.RegularExpressions; 

class Program 
{ 
    static void Main() 
    { 
     string xyz = "text/plain; charset=US-ASCII; name=\"anythingfile.txt\""; 
     Match m = Regex.Match(xyz, "name=\"(?<name>[^\"]+)\""); 
     Console.WriteLine(m.Groups["name"].Value); 
     Console.ReadKey(); 
    } 
}