RegEx, чтобы получить текст в тегах - PullRequest
2 голосов
/ 09 декабря 2008

Мне нужно Регулярные выражения , чтобы получить текст в пределах 2 тегов.

Допустим, я хочу вернуть массив, содержащий любой текст в тегах <data> и </data>. Или любой текст внутри тегов "(" и ")".

Как я могу это сделать с помощью RegEx в C #?


Расширенный вопрос будет:

  1. Входная строка: "color = rgb (50,20,30)"
  2. Как я могу получить 3 числа в 3 отдельных слотах массивов, возвращаемых процессором RegEx в C #?

Ответы [ 5 ]

4 голосов
/ 09 декабря 2008

регулярное выражение Perl будет

$string =~ /color=rgb\((\d+),(\d+),(\d+)\)/;
@array = ($1,$2,$3);

Но вам, вероятно, нужно больше информации, чтобы это.

3 голосов
/ 09 декабря 2008

Поскольку вы специально упомянули C #, вот как я делаю этот точный анализ:

private static readonly Regex RgbValuePattern = new Regex(@"(?<r>\d{1,3}) ?, ?(?<g>\d{1,3}) ?, ?(?<b>\d{1,3})",
                                                          RegexOptions.Compiled | RegexOptions.ExplicitCapture);

Потом позже ...

var match = RgbValuePattern.Match(value);

if (match.Success)
{
    int r = Int32.Parse(match.Groups["r"].Value, NumberFormatInfo.InvariantInfo);
    int g = Int32.Parse(match.Groups["g"].Value, NumberFormatInfo.InvariantInfo);
    int b = Int32.Parse(match.Groups["b"].Value, NumberFormatInfo.InvariantInfo);
    return Color.FromArgb(r, g, b);
}
1 голос
/ 14 ноября 2009

Использование Regex для разбора XML, как правило, очень плохая идея. См. этот ответ .

1 голос
/ 09 декабря 2008

На этот похожий вопрос есть ответы, которые помогут:

0 голосов
/ 09 декабря 2008

Я полагаю, что реальные проблемы возникнут, когда вы захотите разобрать вложенные конструкции. Например, когда вы хотите изучить XML, как это <data><data>123</data><data>456</data></data> для извлечения данных, включенных в крайние теги <data>, одного RegEx будет недостаточно. Просто предупреждаю вас, чтобы вы не использовали RegEx там, где существуют еще некоторые (мощные и специфические) методы. Настоящие XML-парсеры следует учитывать при выполнении более сложных задач в XML. Мои 2 цента ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...