2016-08-02 7 views
0

Hier habe ich folgende Strings,wie dieser regulären Ausdruck nach Split

"#,##0.00" 
"\"$\"#,##0.0000" 

Ich brauche mit regulären Ausdrücken zu teilen.

Meine Erwarteter Ausgang ist

"#,##0.00" => 2 (decimal) 
"\"$\"#,##0.0000" => $4(4 decimal with $) 

Wie konvertiert man kann u bitte irgendeine Art und Weise vor.

Dank

+0

Was haben Sie bisher versuchen? Versuchen Sie ['Regex.Matches (" #. ## 0.00 ", @"^(?: "" (\ $) "")?. *? (0 +) $ ") [0]'] (http://ideone.com/RXYrLr) und verwenden Sie beide Gruppen. –

+0

Danke, es funktioniert .. aber für die zweite nicht nur für $ Symbol hat es möglicherweise ein anderes Zeichen in diesem Fall, wie zu teilen? –

+0

@AkbarBasha: http://ideone.com/dlyPnA? –

Antwort

2

können Sie die folgende regex verwenden:

^(?:"([^"]+)")?.*?(0+)$ 

Das Muster passt:

  • ^ - Beginn der Zeichenfolge
  • (?:"([^"]+)")? - 1 oder 0 Sequenzen von:
    • " - ein doppeltes Anführungszeichen
    • ([^"]+) - Gruppe 1 Einfangen 1 oder mehr Zeichen andere als "
    • "
  • .*? - alle Zeichen außer Newline, 0 oder mehr Wiederholungen
  • (0+) - Gruppe 2 Erfassung von 1 oder mehr Nullen
  • $ - Ende der Zeichenfolge

Und hier ist ein # demo C:

var pat = @"^(?:""([^""]+)"")?.*?(0+)$"; 
var match = Regex.Match("#.##0.00", pat); 
if (match.Success) { 
    Console.WriteLine(match.Groups[1].Value + match.Groups[2].Length.ToString()); 
} // => 2 
// With "\"$\"#,##0.0000" input: $4 

Siehe IDEONE demo