Suche Regulären Ausdruck

DannyP

Mitglied
Hallo zusammen :)

Ich komme derzeit irgendwie mit ein paar regulären Ausdrücken nicht klar.

Diemit einem regulären Ausdruck zu zerlegenden Strings habend abei folgenden Aufbau:
21.03.2007 20:52:04
AAA AAA AA AAAAA xxxxxxxxx AAAAA xxxxxxx (yyyyyy) AAAAAA AAAAA AAAAA.
AAA AAAA zzzzzzz AAAA xxxxxx AAAA xxxxxx AAAA AAAA xxxxx AAA xxxx (yyyyyy) AAAAAA.
AAAA AAAA AAAA xxxxx (yyyy) AAA AAAA AAAAA AAAAA AAAA xxxxx AAA AAAAA.
AAAAA AAAAA AAA xxxxxx (yyyy) AAAA xxxx AAAAA xxxx AAA xxxxxx AAAAAAA.

Jede Zeile enthält einen zu analysierenden String. Interessant für die Weiterverarbeitung sind die Werte in Kleinbuchstaben. Die Kleinbuchstaben sind Platzhalten für einen Text, der immers anders lauten kann. Die Grobuchstaben sind Platzhalter für einen konstanten Text:
AAAA = Ein Text der immer gleich ist, ohne enthaltende Leerzeichen
xxxxxx = Ein Text, der sich immer ändern kann, aber nie Leerzeichen enthält
yyyyyy = Ein Text, der sich immer ändern kann, aber nie Leerzeichen enthält, dafür aber auch Leer sein kann
zzzzzz = Ein Text, der sich immer ändern kann, aber der auch Leerzeichen enthalten kann

Hat jemand ne Idee, wie die einzelnen Ausdrücke aussehen müssten?

Danke im Voraus

Schöne Grüße
Danny
 
In Deinem Fall würde der RegEx ein riesen (un)Ding werden und da ich selbst nicht so der Profi in RegExe bin, hätte ich da mal noch ne andere Idee:

- alle vordefinierten Stringteile per str_replace() mit einem Delimiter (z.B. || oder ##, auf jedenfall was, was dem User nachher auch verboten wird, einzugeben!) ersetzen.
- per explode() im String die Delimiter benützen, damit man nachher alles in einem schönen Array hat
- den Array kannst weiterverarbeiten wie Du willst...

Hier ein Beispiel für die erste Zeile:
PHP:
<?php

$string = "AAA AAA AA AAAAA xxxxxxxxx AAAAA xxxxxxx (yyyyyy) AAAAAA AAAAA AAAAA."; // zu untersuchender String
$delimiter = "||"; // Trennzeichen
$array = array(); // Array zur Weiterverarbeitung

/**
 * 1. Vorgegebener Stringteil: "AAA AAA AA AAAAA "
 * 2. Vorgegebener Stringteil: " AAAAA "
 * 3. Vorgegebener Stringteil: " ("
 * 4. Vorgegebener Stringteil: ") AAAAAA AAAAA AAAAA."
 */

str_replace("AAA AAA AA AAAAA ", $delimiter, $string);
str_replace(" AAAAA ", $delimiter, $string);
str_replace(" (", $delimiter, $string);
str_replace(") AAAAAA AAAAA AAAAA.", $delimiter, $string);

// jetzt sieht der String so aus: "||xxxxxxxxx||xxxxxxx||yyyyyy||"

/**
 * Das ganze mit einem Array:
 *
 * $replace = array("AAA AAA AA AAAAA ", " AAAAA ", " (", ") AAAAAA AAAAA AAAAA.");
 * str_replace($replace, $delimiter, $string);
 *
 * nach meiner Quelle ist dies aber langsamer...
 */

$array = explode($delimiter, $string);

echo($array[0]); // Ausgabe: xxxxxxxxx

?>

http://benchmark.nophia.de/benchmarks-textverarbeitung-k-2-suchen-und-ersetzen-b-12.html#all_time
Nach dieser Quelle ist str_replace() am schnellsten (ohne Arrays...).

Hoffe war alles verständlich.
 
Zuletzt bearbeitet:
Zurück