Suche regulären Ausdruck

trench140

Mitglied
Aloa,

ich muss einen String matchen, von dem ich vorher nicht genau weiß, ob er komplett geliefert wird oder ab einer bestimtmen Stelle abgeschnitten wird (hängt von dem ab, was zusätzliche vorne angehängt wird, ich kann das nicht beeinflussen, meine Aufgabe ist lediglich den String abzutrennen).

Es sieht z.B. so aus, dass manchmal "langezeichenkette | Deutschland" geliefert wird, manchmal jedoch auch nur "etwaslängerezeichenkette | Deutsch" oder "ganzschönlangezeichenkette | Deut".

Sprich, ich muss auf alle Variante von "D" bis "Deutschland" matchen. Gibt es hierfür irgendeinen simplen Ausdruck? Ich könnte natürlich stur alle Strings von "D" bis "Deutschland" testen, aber ich bin mir nicht sicher, ob das die "schönste", sprich effizienteste Methode ist. Eine andere Alternative, bei der ich jedoch nicht weiß, wie ich das anstellen soll wäre es, aufbauend zu matchen, sprich, erst zu schauen, ob der erste Buchstabe nen "D" ist, dann ob nen "e" folgt, daraufhin nen "u" usw..

Die gesamte gelieferte Zeichenkette kann ich übrigens vorher anhand von "|" splitten, ich weiß dann auch, wo der entsprechende String steht (er ist immer der letzte), nur das Matching bereitet mir gerade etwas Kopfzerbrechen.

Gruß & Danke,
Trench
 
Ich könnte natürlich stur alle Strings von "D" bis "Deutschland" testen, aber ich bin mir nicht sicher, ob das die "schönste", sprich effizienteste Methode ist.
Dir bleibt nichts anderes übrig.
PHP:
function foobar($str)
{
	$retVal = '(?:'.preg_quote(substr($str, 0, 1));
	if (strlen($str) > 1) {
		$retVal .= foobar(substr($str, 1));
	}
	$retVal .= ')?';
	return $retVal;
}
var_dump(foobar('Deutschland'));
 
Hi,

danke für deine Hilfe.

Also der String besteht nur aus einer Zeile. Es geht darum, dass ein Teilstring entfernt werden muss, und zwar das besagte "Deutschland" bzw. alle Variationen davon.
Das Problem ist jedoch, dass ich nicht einfach das letzte Element des Arrays löschen kann, da es wesentlich mehr Ergebnisse gibt, bei denen der letzte Teilstring eben anders aussieht. Daher muss ich zuerst prüfen, ob ich das letzte Element überhaupt verwerfen darf, und da es eben sein kann, dass der String abgeschnitten wird (es wird so aus der Datenbank geliefert, darauf habe ich keinerlei Einfluss) muss ich eben alle Varianten prüfen.

Jetzt wo du es sagst wäre es aber wahrscheinlich sinnvoller einfach darauf zu prüfen, ob der String zusätzlich noch am Ende der Zeichenkette auftaucht, dadurch spar ich mir dann das Array-Gehampel.

Das genannte Problem bleibt aber immer noch, das ich checken muss, was am Ende steht. ich werd mir jedenfalls mal deine Links zu Gemüt führen, vielen Dank.
 
Da gibs bestimmt ein RegExp für.
Code:
/(D\w*)/ gibt dir alle Wörter mit D am Anfang
/(de[u]?[t]?[s]?[ c]?[h]?[l]?[a]?[n]?[d]?)/i gibt dir alle Wörter die mit "de" am Anfang (Groß- Klein egal durch das /i ) und alle darauffolgenden Buchstaben für das Wort Deutschland:

De
dEu
DEuT
usw wird gefunden
 
Zurück