# Regex: Minuten aus Zeitangabe (09:00:00) filtern



## glhlg (23. März 2010)

Guten Morgen,

ich habe einen String: 09:00:00 und ich möchte gerne von Uhrzeiten die Minuten ermitteln.


```
\d{2}          09:00:00
:\d{2}:        09:00:00
```

Leider weiß ich nicht, wie ich das zweite Vorkommen, oder aber einen String zwischen zwei Strings abfragen kann.


Danke schon mal für eure Hilfe!
Gruß
Gerrit


----------



## vfl_freak (23. März 2010)

Moin,

ich weiß zwar nicht, was Du mit "Sonstige Sprachen" meinst resp. umd welche es konkret handelt, aber bspw. unter Java oder auch C++ gibt es die Funktion "substring", die Dir einen Teilstring liefert.

Java-Beispiel:

```
String sDate = "09:00:00";
String sMinuten = sDate.substring( 3, 5 );
// ergibt: sMinuten = "00";
```

Gruß
Klaus


----------



## Yaslaw (23. März 2010)

Ansonsten. Die Klammern sind Suchresultate.....

```
\d{2}:(\d{2}):\d{2}
```


----------



## glhlg (23. März 2010)

yaslaw hat gesagt.:


> Ansonsten. Die Klammern sind Suchresultate.....
> 
> ```
> \d{2}:(\d{2}):\d{2}
> ```



Das gibt mir leider die ganze Uhrzeit zurück. Ich möchte gerne nur die Minuten-Angabe. Also immer das, was zwischen : steht.




vfl_freak hat gesagt.:


> ich weiß zwar nicht, was Du mit "Sonstige Sprachen" meinst resp. umd welche es konkret handelt, aber bspw. unter Java oder auch C++ gibt es die Funktion "substring", die Dir einen Teilstring liefert.
> 
> Java-Beispiel:
> 
> ...



Explizit benötige ich das in Javascript.
Ich habe es unter "sonstige Sprachen" gepostet, da ich eine Regex suche, die mir die Minuten zurückgibt. Dass es auch mit String-Funktionen geht, ist mir klar und das bekomme ich auch ohne Weiteres hin. Ich dachte nur, ich schaue mir mal Regex an ...

Gruß
Gerrit


----------



## Neither (23. März 2010)

glhlg hat gesagt.:


> Explizit benötige ich das in Javascript.
> Ich habe es unter "sonstige Sprachen" gepostet, da ich eine Regex suche, die mir die Minuten zurückgibt. Dass es auch mit String-Funktionen geht, ist mir klar und das bekomme ich auch ohne Weiteres hin. Ich dachte nur, ich schaue mir mal Regex an ...



Die String-Funktionen sind bei solchen Operationen nicht optimal. Man muß immer davon ausgehen, dass man wirklich nur einen passenden und von der Art her immer ähnlichen String hat.

So kann eine Lösung aussehen:


```
<script type="text/javascript">
function TesteDatum(pruefDatum)
{

      var ausdruck = /\d{1,2}\.(\d{1,2})\.\d{4}/; 
      var ergebnis = pruefDatum.match(ausdruck); 

	  alert(ergebnis[1]);
      
      return;
};  
</script>
```

Die Prüfung mit Hilfe des regulären Ausdrucks liefert ein Array zurück.
Das erste Element ist der gesamte Ausdruck der auf den regulären Ausdruck passt und die weiteren Elemente des Arrays sind die Ergebnisse der Klammer. Da wir nur eine Klammer hier haben hat das Array also zwei Elemente.


----------



## chmee (23. März 2010)

```
\d{2}:(\d{2}):\d{2}
```
Das erste Feld des Ergebnisarray ist der ganze Fund, das zweite Feld sollte nur die Minutenzahl sein.

in php mit allen Zeitfeldern (man achte auf die Klammern)

```
$time="12:34:40";
preg_match_all("/(\d{2}):(\d{2}):(\d{2})/",$time,$found);

// -- Ergebnisarray
// $found[0] = "12:34:40";
// $found[1] = "12";
// $found[2] = "34";
// $found[3] = "40";
```

mfg chmee


----------

