RegEx在标签内获取文本

时间:2008-12-09 16:10:38

标签: regex string

我需要一个Regular Expressions来获取2个标签内的文字。

假设我想要一个包含 <data&gt;内任何文字的数组。和</data&gt;标签 或者“(>”和“)”标签中的任何文字

如何使用C#中的RegEx进行此操作?


一个高级问题是:

  1. 输入字符串为“color = rgb(50,20,30)”
  2. 如何在C#中使用RegEx处理器返回的3个单独的数组插槽中获取3个数字?

5 个答案:

答案 0 :(得分:4)

Perl regexp将是

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

但您可能需要更多信息。

答案 1 :(得分:3)

既然你特意提到了C#,那么我就是这样做的:#/ p>

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

答案 2 :(得分:1)

这个类似的问题有答案可以提供帮助:

答案 3 :(得分:1)

使用Regex解析XML通常是一个非常糟糕的主意。请参阅this answer

答案 4 :(得分:0)

我相信当你想要解析嵌套结构时会出现真正的问题。例如,当您想要像这样检查XML时 <data><data>123</data><data>456</data></data> 要提取最外层<data>标记中包含的数据,仅使用一个RegEx是不够的。只是警告你不要使用RegEx,其中存在更多(强大和特定)方法。在XML上执行更复杂的任务时,应考虑使用真正的XML解析器。我的2美分......