Регулярные выражения С#, строка между одинарными кавычками

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

Я хочу получить текст между кавычками ', используя регулярные выражения.

Может ли кто-нибудь?

Ответ 1

Что-то вроде этого должно это сделать:

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);
}

Объяснение выражения '([^']*):

 '    -> 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

Ответ 2

Вы хотите сопоставить GUID в строке, используя регулярное выражение.

Это то, что вы хотите, я подозреваю!

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)
{
...
}

Ответ 3

Это приведет к извлечению текста между первой и последней одинарной цитатой в строке:

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
}

Ответ 4

Вы также можете использовать позитивный lookahead и lookbehind,

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);
}