Einzelnen Beitrag anzeigen

Assarbad
(Gast)

n/a Beiträge
 
#4

Re: Frage zu regulären Ausdrücken

  Alt 3. Feb 2005, 13:13
PCRE = Perl Compatible Regular Expression(s)

Aber irgendwie sieht die Syntax oben überhauptnicht nach Perl aus. Aber könnte mich auch irren - ist ja so vielfältig \d == [0-9] (ich benutze letzteres, da es übersichtlicher ist).

Bei mir wäre das wohl (sehr weit gefaßt - und jetzt nicht getestet):

Code:
01.02.2005 4256.65 4281.05 4249.69 4279.97 
31.01.2005 17:45 4211.86 4258.41 4211.86 4254.85
Eine Aufteilung in 2 REs wäre angesagt! Man sollte eine RE nehmen um es wie folgt (rot/grün markiert) zu unterteilen.

01.02.2005 4256.65 4281.05 4249.69 4279.97
31.01.2005 17:45 4211.86 4258.41 4211.86 4254.85

Danach sollte der rote Teil (ein Match!) nochmals per RE aufgeteilt werden.

Code:
([0-9]{2}\.[0-9]{2}\.[0-9]{2}[\t\s]+[0-9]{2}:[0-9]{2}?|[0-9]{2}\.[0-9]{2}\.[0-9]{2}?)[\s\t]+([0-9\.]+?)[\s\t]+([0-9\.]+?)[\s\t]+([0-9\.]+?)[\s\t]+([0-9\.]+)
"." ist übrigens ein beliebiges Zeichen (es ist eine allumfassende Zeichenklasse). Wenn du "." einfangen willst, braucht es "\." um es auszumaskieren.

Außerdem suchst du nur nach einem Zeichen zwischen 0 und 9 (mit "\d")! Du mußt Modifiere wie "{2}", "{2,2}", "+" oder "*" benutzen.

Meine RegEx macht folgendes:
Als erstens wird entweder Datum oder Datum+Uhrzeit in den ersten Match gespeichert. Die anderen vier Matches sind dann die Zahlen (aber OHNE die Spaces).

Spaces und Tabs können in beliebiger Anzahl zwischen den einzelnen Teilen im String auftauchen (1 und mehr Vorkommen). Es würde also sowohl Space als auch Tab als Trenner erkannt. Es könnte sein, daß in meiner RE das erste Fragezeichen weggelassen werden muß. Da bin ich jetzt nicht so sicher.
  Mit Zitat antworten Zitat