2013-10-02 7 views
7

Mam proste pytanie dotyczące wyrażeń regularnych w języku C#.Co to jest 1 USD i 2 USD w Wyrażenia regularne?

Co to jest 1 $ i 2 $ w wyrażeniu regularnym C#?

Czy oba należą do grup?

+2

FYI, to są częścią .NET składni wyrażeń regularnych. C# nie ma obsługi wyrażeń regularnych. Wszystkie funkcje obsługi wyrażeń regularnych są częścią platformy .NET Framework. –

+1

Proszę podać próbkę swojego wyrażenia regularnego. 1 $, 2 $, $, może oznaczać różne rzeczy w zależności od kontekstu, w którym go używasz. I @JohnSaunders ma rację. – celerno

+0

@celerno Czy $ 1 kiedykolwiek coś innego niż numerowana substytucja grupy? –

Odpowiedz

8

To wartości przechwyconych grup według indeksu. 1 USD to pierwsza przechwycona grupa, a 2 USD to druga przechwycona grupa. Jak zauważył David, te wartości są używane w wzorach zastępczych.

string input = "Hello World"; 
string result = Regex.Replace(input, @"(\w+) (\w+)", "$2 $1"); 

wyjściowa: World Hello

3

substitutions. W szczególności numbered group substitutions. Z dokumentacji:

Element numer język $ obejmuje ostatnią podciąg dopasowany przez liczba uchwycenie grupy w ciągu zastępowania, gdzie liczba jest indeks grupy przechwytywania. Na przykład zamienny wzorzec $ 1 wskazuje, że dopasowany podciąg powinien zostać zastąpiony przez pierwszą przechwyconą grupę. Aby uzyskać więcej informacji o ponumerowanych grupach przechwytujących, zobacz Grupowanie konstrukcji w wyrażeniach regularnych.

Grupy przechwytujące, które nie są jawnie przypisane nazwami przy użyciu składni (?), Są ponumerowane od lewej do prawej, zaczynając od jednej. Nazwane grupy są również ponumerowane od lewej do prawej, zaczynając od jednej wyższej niż indeks ostatniej nienazwanej grupy. Na przykład, w wyrażenie regularne (\ W) (? \ D), indeks cyfry nazwie grupa 2.

Jeżeli numer nie określa prawidłową grupę przechwytywania zdefiniowaną w wzorcu wyrażenia regularnego, Liczba $ jest interpretowana jako literalna sekwencja znaków, która jest używana do zamiany każdego dopasowania.

W poniższym przykładzie użyto podstawiania $ number, aby usunąć symbol waluty z wartości dziesiętnej. Usuwa symbole walut znalezione na początku lub końcu wartości pieniężnej i rozpoznaje dwa najbardziej popularne separatory dziesiętne ("." I ",").

using System; 
using System.Text.RegularExpressions; 

public class Example 
{ 
    public static void Main() 
    { 
     string pattern = @"\p{Sc}*(\s?\d+[.,]?\d*)\p{Sc}*"; 
     string replacement = "$1"; 
     string input = "$16.32 12.19 £16.29 €18.29 €18,29"; 
     string result = Regex.Replace(input, pattern, replacement); 
     Console.WriteLine(result); 
    } 
} 
// The example displays the following output: 
//  16.32 12.19 16.29 18.29 18,29 
+0

Czy możesz wyjaśnić przykład w poniższym linku? [link] (http://msdn.microsoft.com/en-us/library/xwewhkd1.aspx) _Sekcja example_ ** linia ** 'zastąpienie ciągu =" $ 2 ";' – Viki888

+0

Zostało to wyjaśnione w pierwszym akapicie dokumentacji cytuję w odpowiedzi. '$ 1' jest pierwszą przechwyconą grupą,' $ 2' jest drugą przechwyconą grupą i tak dalej. –