RegEx получить текст в тегах

голоса
2

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

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

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


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

  1. Входная строка является «цвет = RGB (50,20,30)»
  2. Как я могу получить 3 номера в 3-х раздельных слотах массива, возвращаемый процессор RegEx в C #?
Задан 09/12/2008 в 17:10
источник пользователем
На других языках...                            


5 ответов

голоса
4

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

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

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

Ответил 09/12/2008 в 17:13
источник пользователем

голоса
0

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

Ответил 09/12/2008 в 17:35
источник пользователем

голоса
1

Этот подобный вопрос есть ответы, которые помогут:

Ответил 09/12/2008 в 17:54
источник пользователем

голоса
3

Поскольку вы конкретно упоминаетесь 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);
}
Ответил 09/12/2008 в 18:29
источник пользователем

голоса
1

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

Ответил 14/11/2009 в 01:03
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more