Come referenziare le selezioni “interne” (()) in un’espressione regolare?

Come si fa riferimento alla parentesi interna in Regex?

I dati di esempio sono un listino prezzi del prodotto che mostra diverse interruzioni di prezzo in base alla quantità acquistata. Il formato è quantityLow – quantityHigh: pricePer; multipli.

Ho usato LINQPad per build questa espressione in C # Regex per separare le parti, che mostra una comoda visualizzazione della separazione dei dati Regex. In questo esempio, ci sono parentesi “interne” (selezioni), creando una struttura gerarchica di dati.

string mys = "1-4:2;5-9:1.89"; Regex.Matches (mys, @"((\d+)[-|\+](\d*):(\d+\.?\d*);?)").Dump(); // Graphically show 

Questo si divide in (La partita è tutto, all’interno della partita c’è una singola partita e una partita di gruppo. All’interno della partita di gruppo ci sono alcune partite singole.)

  • MatchCollection (2 articoli)
    • Collezione di gruppo (4 articoli)
      • CaptureCollection (1 object) () Raggruppa “1-4: 2;”
      • CaptureCollection (1 object) () Raggruppa “1”
      • CaptureCollection (1 object) () Raggruppa “4”
      • CaptureCollection (1 object) () Raggruppa “2”
    • CaptureCollection (1 item) () Match “1-4; 2;”
    • Collezione di gruppo (4 articoli)
      • CaptureCollection (1 object) () Raggruppa “5-9: 1.89”
      • CaptureCollection (1 object) () Raggruppa “5”
      • CaptureCollection (1 object) () Raggruppa “9”
      • CaptureCollection (1 object) () Raggruppa “1.89”
    • CaptureCollection (1 object) () Corrispondenza “5-9: 1.89”

Solo per riferimento:

  • () gruppo di parentesi ha trovato risultati che possono essere referenziati da un \ 1 .. \ 9 (penso).
  • \ d corrisponde a una singola cifra. Il + dopo corrisponde a una o più cifre. * dopo le partite zero o più cifre. ? dopo dice che questa partita è facoltativa.
  • . corrisponde a un singolo carattere. \. in questo caso corrisponde un punto o un decimale.