2011-04-14 21 views

cevap

36

şey: İfade '([^']*) ait

string val = "name='40474740-1e40-47ce-aeba-ebd1eb1630c0'"; 

Match match = Regex.Match(val, @"'([^']*)"); 
if (match.Success) 
{ 
    string yourValue = match.Groups[1].Value; 
    Console.WriteLine(yourValue); 
} 

Açıklama:

' -> find a single quotation mark 
( -> start a matching group 
[^'] -> match any character that is not a single quotation mark 
* -> ...zero or more times 
) -> end the matching group 
+0

öyle çok yardımcı açıklama. Ama neden grup [1]? – liang

+0

@liang İlk grup ('match.Groups [0]') tüm regex ile eşleşen tam dizeyi içerecektir. Bu aynı zamanda önde gelen tırnak karakterini de içerdiği anlamına gelir. 'match.Groups [1]' regex'te ilk eşleşen grubu içerir, yani kullanmak istediğimiz değer budur. –

+0

Gruplar hakkında bilmiyordum, ama tam olarak bu çok yardımcı oluyor! +1 – feldeOne

3

Normal bir ifade kullanarak bir dizede GUıD'ın maç için arıyoruz.

İstediğiniz budur, şüpheliyim!

public static Regex regex = new Regex(
    "(\\{{0,1}([0-9a-fA-F]){8}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}-"+ 
    "([0-9a-fA-F]){4}-([0-9a-fA-F]){12}\\}{0,1})",RegexOptions.CultureInvariant|RegexOptions.Compiled); 

Match m = regex.Match(lineData); 
if (m.Succes) 
{ 
... 
} 
2

Bu hat üzerinde ilk ve son tek alıntı arasında metin ayıklamak olacak: Sen pozitif ileri yönlü ve aynı zamanda Geriye İlerleme kullanabilirsiniz

string input = "name='40474740-1e40-47ce-aeba-ebd1eb1630c0'"; 
Regex regName = new Regex("'(.*)'"); 
Match match = regName.Match(input); 
if (match.Success) 
{ 
    string result = match.Groups[1].Value; 
    //do something with the result 
} 
+0

eğer 'a', 'b' olsaydı, bu muhtemelen bir "a" yerine, bir "a", "b" dizgisi alırdı. @ Fredrik bunu yapacak. –

0

,

string val = "name='40474740-1e40-47ce-aeba-ebd1eb1630c0'"; 

Match match = Regex.Match(val, @"(?<=')[^']*(?=')"); 
if (match.Success) 
{ 
    string yourValue = match.Groups[0].Value; 
    Console.WriteLine(yourValue); 
} 
İlgili konular