RegEx aby uzyskać tekst w tagach

głosy
2

Potrzebuję wyrażeń regularnych , aby uzyskać tekst w ciągu 2 znaczniki.

Powiedzmy, że chcę tablicą zwróconą zawierający dowolny tekst w <data> i </data> znaczniki. Lub dowolny tekst wewnątrz „(” i „)” tagów.

Jak mogę to zrobić z regex tych w C #?


Zaawansowany pytanie byłoby:

  1. Ciąg wejściowy jest color = rgb (50,20,30)
  2. Jak mogę dostać 3 numery w 3 oddzielnych gniazd tablicowych jako zwrócony przez procesor regex w C #?
Utwórz 09/12/2008 o 17:10
źródło użytkownik
W innych językach...                            


5 odpowiedzi

głosy
4

Perl regexp byłoby

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

Ale trzeba chyba więcej informacji, które to.

Odpowiedział 09/12/2008 o 17:13
źródło użytkownik

głosy
3

Ponieważ wymienionymi C #, oto jak robię to dokładnie parsowania:

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

Potem na ...

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);
}
Odpowiedział 09/12/2008 o 18:29
źródło użytkownik

głosy
1

Przy użyciu regex do analizowania XML jest zazwyczaj bardzo zły pomysł. Zobacz tę odpowiedź .

Odpowiedział 14/11/2009 o 01:03
źródło użytkownik

głosy
1

To podobne pytanie ma odpowiedzi, które pomogą:

Odpowiedział 09/12/2008 o 17:54
źródło użytkownik

głosy
0

Wierzę, że prawdziwe problemy pojawią się, gdy chcemy analizować gniazdowania konstruktów. Na przykład, gdy chcemy zbadać XML tak <data><data>123</data><data>456</data></data> , aby wyodrębnić dane zawarte w peryferyjnych <data>tagów jeden sam RegEx nie byłoby wystarczające. Tylko ostrzec, aby nie użyć wyrażenia regularnego, gdzie istnieje kilka (silne i specyficzne) metody. Parser XML rzeczywistym należy rozważyć podczas wykonywania bardziej złożonych zadań na XML. Moje 2 centy ...

Odpowiedział 09/12/2008 o 17:35
źródło użytkownik

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