Hinweis: Das Forum wird geschlossen! Neue Registrierungen sind nicht mehr möglich!

 Zurück zu Pro-Linux   Foren-Übersicht   FAQ     Suchen    Mitgliederliste
regular expressions problem

 
Neuen Beitrag schreiben   Auf Beitrag antworten    Pro-Linux Foren-Übersicht -> Programmieren - Allgemein
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
slack



Anmeldungsdatum: 25.08.2006
Beiträge: 6

BeitragVerfasst am: 25. Aug 2006 16:43   Titel: regular expressions problem

hallo,

folgendes problem:

habe mehrere pakages:
x11-devel-i486-6.9.0
x11-i486-6.9.0
bzip2-i386-1.2

nun moechte ich aus dem oberen beispiel nur:
x11-deve-i486l haben, aus dem naechsten nur x11-i486 und aus dem letzten bzip2-i386...
hatte es hiermit versucht: .*(!?-\d+)
leider klappt das nicht, kann mir da jemand weiterhelfen?
es gibt nichts was ich mehr hasse als regexp Sad

gruß,
slack
 
Benutzer-Profile anzeigen Private Nachricht senden

Marco Gerber
Gast





BeitragVerfasst am: 25. Aug 2006 17:18   Titel:

Guten Tag

Mit regulaeren Ausruecken kannst du da auch nichts machen, weil regulaere Ausdruecke als endliche Automaten nicht in der Lage sind zu zaehlen.

Was du brauchst ist eine Substitution.

Beispiel fuer die bash:
Code:

$ var="x11-devel-i486-6.9.0"
$ echo ${var%-*}


hth

Marco
 

slack



Anmeldungsdatum: 25.08.2006
Beiträge: 6

BeitragVerfasst am: 25. Aug 2006 17:25   Titel: hmm...

es geht mir ja nicht ums zaehlen... ich brauche einen ausdruck der genau das macht:

jedes zeichen solange kein -(zahl...) kommt markieren

ja ich koennte es zur not auch mit dem echo... machen, indem ich in popen ne pipe zum lesen aufmach und das in der sh ausfuehr, ist aber nicht gerade toll :/
 
Benutzer-Profile anzeigen Private Nachricht senden

slack



Anmeldungsdatum: 25.08.2006
Beiträge: 6

BeitragVerfasst am: 25. Aug 2006 17:59   Titel:

aja, das ganze soll in c realisiert werden... mit pcre Wink

gruß
 
Benutzer-Profile anzeigen Private Nachricht senden

Marco Gerber
Gast





BeitragVerfasst am: 25. Aug 2006 18:15   Titel:

hello again

Ein endlicher Automat, und damit ein regulaerer Ausdruck loest das sogenannte Wortproblem. Er entscheidet, ob ein Wort zu der Sprache, welche durch den Regulaeren Ausdruck definiert ist, gehoert oder nicht.

Regulaeren Ausdruecken fehlt ein Stack mit dem sie zaehlen koennten (zur Loesung dieses Problems kann man sogenannte Kellerautomaten beiziehen)

Du musst also die Idee, dein gesamtes Problem mittels eines regulaeren Ausdruckes loesen zu wollen verwerfen.

Was du jedoch tun kannst, ist folgendes:
Du grenzt deinen String ein, partitionierst ihn also auf die Anzahl zu untersuchender Zeichen (das sind in deinem Fall genau 2) und fuehrst dann auf diesem Teilstring einen regex durch und wertest dann das Ergebnis aus.
Dieser kann recht einfach aussehen (nicht implementierungsspezifisch !):
Code:

-[0-9]




Ich hoffe du verstehst wo das Problem tatsaechlich liegt.

hth

Marco
 

slack



Anmeldungsdatum: 25.08.2006
Beiträge: 6

BeitragVerfasst am: 25. Aug 2006 19:01   Titel:

ehrlich gesagt versteh ich das nicht...
hatte immer dieses "kodos" - und damit hab ich immer "gearbeitet".
es ist nur ein string (hab ne funktion die immer wieder aufgerufen wird), also versteh ich auch nich ganz wie du das mit dem zaehlen meinst...
werd mir das ganze morgen nochmal in ruhe angucken

thx fuer die hilfe

gruß
 
Benutzer-Profile anzeigen Private Nachricht senden

Janka



Anmeldungsdatum: 11.02.2006
Beiträge: 3569

BeitragVerfasst am: 25. Aug 2006 20:49   Titel:

Wenn ich dich richtig verstanden habe, willst du alles nach dem letzten "-" abschneiden. Dieses Problem kann man nur mit "non-greedy"-Quantifiers lösen. Das wäre z.B. mit AREs "(.*)-.*?"

Ein Beispiel mit Tcl:
Code:

$ tclsh
% regsub {(.*)-.*?} x11-devel-i486-6.9.0 {\1}
x11-devel-i486
% regsub {(.*)-.*?} x11-i486-6.9.0 {\1}
x11-i486
% regsub {(.*)-.*?} bzip2-i386-1.2 {\1}
bzip2-i386


Janka
_________________
Ich vertonne Spam immer in /dev/dsp statt /dev/null.
Ich mag die Schreie.
 
Benutzer-Profile anzeigen Private Nachricht senden

slack



Anmeldungsdatum: 25.08.2006
Beiträge: 6

BeitragVerfasst am: 25. Aug 2006 21:25   Titel:

DANKE
*umwucht* Smile))))
das war es wo ich gesucht habe Wink
 
Benutzer-Profile anzeigen Private Nachricht senden

Marco Gerber
Gast





BeitragVerfasst am: 25. Aug 2006 21:47   Titel:

Also irgendwie versteh ich das jetzt nicht. Du wolltest doch eine Loesung in C ?

Immer oefter habe ich das Gefuehl, dass die Leute selbst gar nicht wissen was sie eigentlich wollen....
Und das bezieht sich jetzt nicht nur auf diesen Thread hier.

Marco
 

texture
Gast





BeitragVerfasst am: 26. Aug 2006 7:37   Titel:

Zitat:
Immer oefter habe ich das Gefuehl, dass die Leute selbst gar nicht wissen was sie eigentlich wollen....
Und das bezieht sich jetzt nicht nur auf diesen Thread hier.

Die Fragestellungen sind deshalb auch ungenau. Die Antworten werden nicht richtig gelesen und deshalb fragt man einfach noch einmal. Da bemerkt man auch die geringe Eigeninitiative.
Einmal antworten und wenn man merkt das nichts dabei rauskommt, Finger davon.

Google spuckt das übrigens in <1 sec. raus
 

Janka



Anmeldungsdatum: 11.02.2006
Beiträge: 3569

BeitragVerfasst am: 26. Aug 2006 9:34   Titel:

Die korrekte Formulierung eines Problems ist aber schon Teil der Lösung. Wenn man erst einmal weiß, wonach man sucht, ist der Rest vielfach Fleißarbeit.

Mich nerven viel mehr Fragesteller, die eine beschriebene funktionierende Lösung nicht ausprobieren können, weil dies irgendwelche Randprobleme erzeugt, von denen sie im Ursprungsposting aber nichts erwähnt haben. Oder die Randprobleme sind eingebildeter Natur, das ist dann noch schlimmer.

Janka
_________________
Ich vertonne Spam immer in /dev/dsp statt /dev/null.
Ich mag die Schreie.
 
Benutzer-Profile anzeigen Private Nachricht senden

slack



Anmeldungsdatum: 25.08.2006
Beiträge: 6

BeitragVerfasst am: 27. Aug 2006 11:27   Titel:

@marco und texture
kein plan was fuer probleme ihr habt, mir auch egal, ich habe nach einer stinknormalen regex gefragt - habe btw. lange gegoogled und rumprobiert, also spart euch bitte so "vermutungen" wie geringe eigeninitiative - sowas finde ich beleidigend.

"Einmal antworten und wenn man merkt das nichts dabei rauskommt, Finger davon."
sehe hier keine antwort von dir, also am besten gleich finger von lassen,

mag sicher sein das die fragestellung etwas ungenau war, finde aber mit den antworten von mir durchaus verstaendlich. immerhin wusste janka was ich mein.
werd da auch nix mehr zu schreiben, keine lust auf ne diskussion
 
Benutzer-Profile anzeigen Private Nachricht senden

Beiträge vom vorherigen Thema anzeigen:   
     Pro-Linux Foren-Übersicht -> Programmieren - Allgemein Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehen Sie zu:  

Powered by phpBB © phpBB Group
pro_linux Theme © 2004 by Mandaxy