Startseite
Stellenmarkt
Downloads
Kontakt
  Community Center:   Forum  |  Gruppen  |  Chat  |

Zurück   Forum Fachinformatiker.de > Programmierung > Skript- und Webserverprogrammierung



Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 22.02.2010, 19:55   #1
Zugriff eingeschränkt, e-Mailadresse ungültig
 
Reg.-Datum: 09.06.2000
Frage regExp: letzten Klammerninhalt auslesen

Hallo zusammen,

versuch mich grad dann regulären Ausdrücken und hab folgendes Problem. Ich möchte jeweils die letzte Klammer auslesen. Mein Problem ist das es sein kann, daß in der letzten Klammer auch nochmal ein oder mehrere Klammer enthalten sein könne.

Aus dem String der wie folgt ausehen kann:
- bla bla bla (TEST1)
- bla bla bla (TEST1) (TEST2 (xxx) yyy)
- bla bla bla (TEST1) (TEST2) (TEST3 (xxx) yyy)

Soll der letzte Klammerinhalt ausgelsen werden.

Sollergebnis:

- TEST1
- TEST2 (xxx) yyy
- TEST3 (xxx) yyy

Wäre nett wenn mir da einer weiterhelfen könnte.

Folgendes hab ich bereits rausgefunden.

\([^()]++\)$

Gruß
jocker
jokker ist offline   Mit Zitat antworten
Alt 22.02.2010, 20:24   #2
Moderator Java
 
Reg.-Datum: 24.07.2007
Ort: auf nem Berg
Standard

Ich denke Du wirst hier mit einem regulären Ausdruck nicht weiter kommen, denn reguläre Ausdrücke sind Reguläre Grammatik ? Wikipedia aus der Chomsky-3-Hierarchie Chomsky-Hierarchie ? Wikipedia

Du willst hier letztendlich Anzahlen von Klammern verarbeiten und das geht nicht mit Chomsky-3-Sprachen, sondern Du brauchst Chomsky-2 (Chomsky-Hierarchie ? Wikipedia) und somit eine kontextfreie Grammatik (Kontextfreie Grammatik ? Wikipedia), die man mit einem Push-Down-Automat / Kellerautomat (Kellerautomat ? Wikipedia) durchführen kann.

=> Bei einem Kellerautomat legst Du immer, wenn Du eine öffnende Klammer findest, diese auf einen Stack, wenn Du eine schließende findest, nimmst Du das oberste Element wieder vom Stack weg. In Deinem Fall musst Du dann nur schauen, nachdem Du die Klammer entfernt hast, ob auf dem Stack noch Daten sind oder ob dieser leer ist.
__________________
In attempting to construct such machines we should not be irreverently usurping His power of creating souls, any more than we are in the procreation of children: rather we are, in either case, instruments of His will providing mansions for the souls that He creates. (Alan Turing)
flashpixx ist gerade online   Mit Zitat antworten
Alt 22.02.2010, 20:46   #3
Zugriff eingeschränkt, e-Mailadresse ungültig
 
Reg.-Datum: 09.06.2000
Traurig

Sorry - versteh aber nur Bahnhof ?!?
jokker ist offline   Mit Zitat antworten
Alt 22.02.2010, 21:03   #4
Moderator Java
 
Reg.-Datum: 24.07.2007
Ort: auf nem Berg
Standard

Zitat:
Zitat von jokker Beitrag anzeigen
Sorry - versteh aber nur Bahnhof ?!?
Was verstehst Du nicht?
Du wirst mit einem regulären Ausdruck das Problem nicht lösen können, denn mit einem regulären Ausdruck kannst Du nicht "zählen". Du willst immer den "letzten" Klammerausdruck, d.h. Du musst alle Ausdrücke zählen und eben den letzten verarbeiten und das geht nur mit der Struktur eines Kellerautomaten, der sich über einen Stack realisieren lässt
__________________
In attempting to construct such machines we should not be irreverently usurping His power of creating souls, any more than we are in the procreation of children: rather we are, in either case, instruments of His will providing mansions for the souls that He creates. (Alan Turing)
flashpixx ist gerade online   Mit Zitat antworten
Alt 22.02.2010, 21:19   #5
Zugriff eingeschränkt, e-Mailadresse ungültig
 
Reg.-Datum: 09.06.2000
Beitrag

Muß erst mal schauen, wie das mit dem Stack tickert.

Trotzdem erstmal Danke.
jokker ist offline   Mit Zitat antworten
Alt 22.02.2010, 21:25   #6
Moderator Java
 
Reg.-Datum: 24.07.2007
Ort: auf nem Berg
Standard

Zitat:
Zitat von jokker Beitrag anzeigen
Muß erst mal schauen, wie das mit dem Stack tickert.
allgemeine Infos: Stapelspeicher ? Wikipedia
Kann man selbst über Arrays oder Listen schnell als Klasse programmieren. Evtl hat aber die Sprache, die Du verwendest ein Collection-Interface, das schon einen Stack implementiert hat.
__________________
In attempting to construct such machines we should not be irreverently usurping His power of creating souls, any more than we are in the procreation of children: rather we are, in either case, instruments of His will providing mansions for the souls that He creates. (Alan Turing)
flashpixx ist gerade online   Mit Zitat antworten
Alt 22.02.2010, 21:28   #7
Zugriff eingeschränkt, e-Mailadresse ungültig
 
Reg.-Datum: 09.06.2000
Daumen hoch

muß das in PHP bewerkstelligen.

Wird noch ein langer Abend
jokker ist offline   Mit Zitat antworten
Alt 22.02.2010, 22:44   #8
Zugriff eingeschränkt, e-Mailadresse ungültig
 
Reg.-Datum: 09.06.2000
Standard die ****e geht :-)

<?
// PRE: Eingabetext in $txt
$txt = "bla bla bla (TEST1) (TEST2) (TEST3 (xxx) (sdfgas) yyy)";

for($i=strlen($txt)-1,
$bCnt=null,
$needle='';
$i>0;
$i--)
{
if($txt[$i]==')')
$bCnt++;

if($txt[$i]=='(')
$bCnt--;

$needle=$txt[$i].$needle;

if($bCnt===0)
break;
}

// POST: letzter Klammerinhalt in $needle

$laenge = strlen($needle);
$laenge = $laenge - 1;
$needle = substr($needle, 1 , strlen($string)-2);

echo $needle;

?>

jokker ist offline   Mit Zitat antworten
Alt 22.02.2010, 22:47   #9
Moderator Java
 
Reg.-Datum: 24.07.2007
Ort: auf nem Berg
Standard

Gut gemacht und im ersten Post hast Du noch dazu die Theorie
__________________
In attempting to construct such machines we should not be irreverently usurping His power of creating souls, any more than we are in the procreation of children: rather we are, in either case, instruments of His will providing mansions for the souls that He creates. (Alan Turing)
flashpixx ist gerade online   Mit Zitat antworten
Alt 22.02.2010, 22:50   #10
Zugriff eingeschränkt, e-Mailadresse ungültig
 
Reg.-Datum: 09.06.2000
Standard

tjo - das hab ich wohl

Der letzte Link war allerdings der Beste.
jokker ist offline   Mit Zitat antworten
Antwort

Tags: ,


Lesezeichen
Zurück   Forum Fachinformatiker.de > Programmierung > Skript- und Webserverprogrammierung

Themen-Optionen
Ansicht


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
mit VB.classic XML auslesen Ricky.G Basic 2 14.05.2008 18:39
Versionsnummer einer .exe auslesen Flons Delphi/RPG+CL/Sonstige 1 20.02.2005 16:36
OU über Anmeldeskript (Batch) auslesen? DoubleW Windows Betriebssysteme 3 21.07.2004 20:21
Datei auslesen / Datensatz DRINGEND Commander_COM C und C++ 3 15.03.2004 15:10
in MS-DOS string auslesen und bearbeiten alexf10 Anwendungssoftware 8 20.06.2002 09:10


Alle Zeitangaben in WEZ +2. Es ist jetzt 22:06 Uhr.