2017-05-19 3 views
-1

Was ist die Regex für ein Datum ab der 4. Position übereinstimmen? Ich möchte, dass es nur das Datum und nicht das ganze Spiel zurückgibt. Das habe ich.Wie passe ich eine Zeichenfolge an, die an einer bestimmten Position in der Zeichenfolge beginnt?

^.{4}[2-9][0-9]{3}[0-1][0-9][0-9]{2} 
DCSG20170406090204-FQI-046.TOT 04-FIC-046 00060Y000815050.562500G 
DCS120170406090204-FQI-045.TOT 04-FIC-045 00060Y000878279.312500G 
DCS120170406090204-FQI-046.TOT 04-FIC-046 00060Y000815050.562500G 

http://regexr.com/3g0d5

+0

Das Datum ist '201704060'? Vielleicht '^ DCSG? 1? (20 \ d +)' wenn dieses Format konsistent ist. – chris85

+2

Wie wäre es nur mit 'string.Substring'? –

+0

@ chris85 Nicht sicher, was dort passiert ist, aber es scheint jetzt zu funktionieren. – null

Antwort

1

Sie wahrscheinlich eine nicht-einfangende Gruppe wollen:

^(?:.{4})([2-9][0-9]{3}[0-1][0-9][0-9]{2})(?:.*)$ 

(Maus über den Text an: http://regexr.com/3g0db und es zeigt nur eine Gruppe)

+0

Ich änderte es zu [2-9] [0-9] {3} [0-1] [0-9] [0-3] [0-9] mit Plänen, Daten weiter validiert zu haben – null

1

I don Ich kenne C# nicht, aber aus meiner Perl-Perspektive sehe ich keine Notwendigkeit für einen regulären Ausdruck. Wenn Sie nur "das Datum" möchten und es nicht validieren oder in Komponenten trennen müssen, rufen Sie die Teilzeichenfolge ab Position 4 (0 basiert) und 8 Zeichen lang ab.

+1

Ja, ich bin bewusst, dass ich Teilstring verwenden kann, aber nur ein bisschen neugierig geworden. – null

Verwandte Themen