[Help]regular expression

Forum für alles rund ums Coden und web.design - HTML, XHTML, XML, CSS, PHP, ASP, Zugriffsrechten, Mods uvm.
Cpt.Gambit
Doom
Doom
Beiträge: 3599
Registriert: Jul 2003

[Help]regular expression

Beitrag von Cpt.Gambit »

Huhu
brauch mal eben die unendliche P0w4r von pq..

ich suche nen Regulären Ausdruck der mir z.b. aus diesem String
010F 08 0000303A 01
alle zeichen aus der dritten Gruppe (0000303A) rausholt. Der Dreh dabei ist die Anzahl Zahlen und Buchstaben (nur A-F) der durch Leerzeichen getrennten Grüppchen muss variabel sein. Kann also auch mal
0001 D56810 0102 BB2847
sein.

Kann einer helfen ?

:ugly:
Bild
Elvistelefon
Klesk
Klesk
Beiträge: 798
Registriert: Jan 2003

Beitrag von Elvistelefon »

Mir hilft immer folgende Seite:

http://regexlib.com/
Bild
Cpt.Gambit
Doom
Doom
Beiträge: 3599
Registriert: Jul 2003

Beitrag von Cpt.Gambit »

Jo is auch meine Seite ..
Hab mich aber schon totprobiert an Ausdrücken, kriegs aber nicht hin :mad:
Bild
drluv

Beitrag von drluv »

[a-zA-Z0-9]+ [a-zA-Z0-9]+ ([a-zA-Z0-9]+) [a-zA-Z0-9]+

würde bei preg_match in php die dritte gruppe matchen.
z3r0c00l
Biker
Biker
Beiträge: 1066
Registriert: Dez 2003

Beitrag von z3r0c00l »

Ich verstehe leider die Angabe nicht ganz - außerdem prüft ein Regex doch nur, ob ein String zu einer bestimmten Sprachklasse gehört oder nicht, oder?
whatever
Doom
Doom
Beiträge: 3681
Registriert: Mai 2001

Beitrag von whatever »

Meinst du nicht, dass reguläre Ausdrücke für diesen einfachen Zweck etwas übertrieben sind?
Entweder du liest einfach alles zwischen dem zweiten und dritten Leerzeichen ein, oder du benutzt eine funktion wie "explode" oder "split", die in vielen Sprachen verfügbar ist, um den String an den Leerzeichen in seine Bestandteile zu zerlegen.
Cpt.Gambit
Doom
Doom
Beiträge: 3599
Registriert: Jul 2003

Beitrag von Cpt.Gambit »

drluv hat geschrieben:[a-zA-Z0-9]+ [a-zA-Z0-9]+ ([a-zA-Z0-9]+) [a-zA-Z0-9]+
Der isses ..

danke
Bild
Warzenschwan
Assist
Assist
Beiträge: 5169
Registriert: Feb 2007

Beitrag von Warzenschwan »

UP.whatever hat geschrieben:Meinst du nicht, dass reguläre Ausdrücke für diesen einfachen Zweck etwas übertrieben sind?
Entweder du liest einfach alles zwischen dem zweiten und dritten Leerzeichen ein, oder du benutzt eine funktion wie "explode" oder "split", die in vielen Sprachen verfügbar ist, um den String an den Leerzeichen in seine Bestandteile zu zerlegen.
#
Bild

Was soll denn daran zu groß sein?
drluv

Beitrag von drluv »

UP.whatever hat geschrieben:Meinst du nicht, dass reguläre Ausdrücke für diesen einfachen Zweck etwas übertrieben sind?
Entweder du liest einfach alles zwischen dem zweiten und dritten Leerzeichen ein, oder du benutzt eine funktion wie "explode" oder "split", die in vielen Sprachen verfügbar ist, um den String an den Leerzeichen in seine Bestandteile zu zerlegen.
Sehe ich im Grunde ähnlich, in diesem Fall kommt es sicherlich auch Kanonen auf Spatzen gleich, aber ich habe mir auch irgendwann dazu gezwungen wo es geht RegExps zu nutzen, einfach um zu lernen damit besser umzugehen. Denn gerade diese einfachen Dinge sind doch die Basis für irgendwelchen assoschwanz RegExp Statements.
Cpt.Gambit
Doom
Doom
Beiträge: 3599
Registriert: Jul 2003

Beitrag von Cpt.Gambit »

Da wo ich die regulären Ausdrücke benutze gibts sowas wie split und explode nicht. Die Sprache ist sehr begrenzt und proprietär, wenn man sowas sagen kann.
Bild
catch
Defense
Defense
Beiträge: 7577
Registriert: Apr 2000

Beitrag von catch »

:lol: nerds!
Bild
Cpt.Gambit
Doom
Doom
Beiträge: 3599
Registriert: Jul 2003

Beitrag von Cpt.Gambit »

Bild

schwul
Bild
Mein Name sei Wapaz
Humilation
Humilation
Beiträge: 10589
Registriert: Dez 2006
Kontaktdaten:

Beitrag von Mein Name sei Wapaz »

CODINGFORUM! :mad:
Cpt.Gambit
Doom
Doom
Beiträge: 3599
Registriert: Jul 2003

Beitrag von Cpt.Gambit »

Oh das gibts ?
Na dann verschieben, closen oder sonstwas machen.
Bild
digitus
Uriel
Uriel
Beiträge: 2969
Registriert: Feb 2001

Beitrag von digitus »

Cpt.Gambit hat geschrieben:Da wo ich die regulären Ausdrücke benutze gibts sowas wie split und explode nicht. Die Sprache ist sehr begrenzt und proprietär, wenn man sowas sagen kann.
Das glaub ich ja fast nicht. Auf Array-Indizes zugreifen können doch eigtl alle Sprachen, mehr brauchst du ja nicht.

Dass du dich daran totprobiert hast wage ich auch mal zu bezweifeln. Der erste Ansatz wäre doch, per RegEx nach einer Folge von Gruppen aus Leerzeichen und nicht-Leerzeichen zu suchen. Das ist dann auch robuster als nur alphanum. Zeichen zu suchen.
Bild
Whitey Weiszmann
Wrack
Wrack
Beiträge: 488
Registriert: Nov 2000

Beitrag von Whitey Weiszmann »

auch wenn die Frage schon beantwortet wurde, hier noch ein nützlicher Link für alle Regex-nerds :)
http://rubular.com/
Benutz das gerne zum "on-the-fly" testen, ohne jedesmal Chars escapen zu müssen.
HomicideSapiens
Patriot
Patriot
Beiträge: 1303
Registriert: Feb 2002

Beitrag von HomicideSapiens »

http://www.regular-expressions.info

für eclipse kann ich das plugin quickrex empfehlen.

und die regex von drluv ist viel zu lang und lesbar :ugly:

(?i:[a-f\d]+ ){2}([a-f\d]+) [a-f\d]+
There are only 10 types of people in in the world: Those who understand binary and those who don't.
zeeno
Uriel
Uriel
Beiträge: 2793
Registriert: Nov 2002
Kontaktdaten:

Beitrag von zeeno »

Cjs_3f hat geschrieben:auch wenn die Frage schon beantwortet wurde, hier noch ein nützlicher Link für alle Regex-nerds :)
http://rubular.com/
Benutz das gerne zum "on-the-fly" testen, ohne jedesmal Chars escapen zu müssen.
http://regexpal.com/ gefällt mir besser. :D
Bild

Drum & Bass: Hartes oder Weiches

"Demokratie ist, wenn man sich aussuchen kann wer verarscht." - Hagen Rether
[/CENTER]
Whitey Weiszmann
Wrack
Wrack
Beiträge: 488
Registriert: Nov 2000

Beitrag von Whitey Weiszmann »

zeeno hat geschrieben:http://regexpal.com/ gefällt mir besser. :D
gebookmarked, falls rubular mal down sein sollte :wave:
oNyx
Sorlag
Sorlag
Beiträge: 3855
Registriert: Mai 2001

Beitrag von oNyx »

http://www.cuneytyilmaz.com/prog/jrx/

ich benutz das ding immer in komodo über tools->extension developer->regexp evaluator

die seite da oben lässt sich übrigens einfach auf hdd speichern. is ne einzelne html mit allem drinne.
弾幕 to the full extent of the jam!
BildBildBildBild
ze blog [rss] ☆ java game tutorialseee games
Davion3000
Daemia
Daemia
Beiträge: 308
Registriert: Jul 2000

Beitrag von Davion3000 »

Unter Annahme der oben genannten Datenstruktur, geht es folgend ohne fette regexp Ausdrücke:
#~:awk '{ print $3 }' /foo/bar
-F muss nicht angegeben werden, weil Leerzeichen default Feldtrenner sind.
Bild
mors falsi imperatori
Blood for the blood God!!!
---------------------------------
Staat heisst das kälteste aller kalten Ungeheuer. Kalt lügt es auch; und
diese Lüge kriecht aus seinem Munde: "Ich, der Staat, bin das Volk." Lüge
ist's! [...] Wo es noch Volk giebt, da versteht es den Staat nicht und
hasst ihn als bösen Blick und Sünde an Sitten und Rechten. (F. Nietzsche)
acid
Humilation
Humilation
Beiträge: 10617
Registriert: Aug 2001

Beitrag von acid »

$penis = explode(' ', $string);
return $penis[2];

Ginge auch.
Bild
EviLsEyE
Administrator
Administrator
Beiträge: 23012
Registriert: Jan 2000
Wohnort: NRW
Kontaktdaten:

Beitrag von EviLsEyE »

acid hat geschrieben:$penis = explode(' ', $string);
return $penis[2];

Ginge auch.
Und wenn in Deinem Penisfragment ungültige Zeichen enthalten sind? (d.h. alles außer 0-9 und A-F)
Bild
HomicideSapiens
Patriot
Patriot
Beiträge: 1303
Registriert: Feb 2002

Beitrag von HomicideSapiens »

bei einem fragmentierten Penis hat er größere Probleme als ungültige Zeichen.

On-Topic: Falls der String validiert werden muss, find ich regex keine schlechte Lösung. Ansonsten würde ich nichtmal zu split greifen (wer weis wie lang der string noch ist ;) ) sondern einfach den substring zwischen 2. und 3. leerzeichen nehmen.

Code: Alles auswählen

int l2=str.indexOf(' ',str.indexOf(' '));
int l3=str.indexOf(' ',l2);
string substr=str.subString(l2,l3);
There are only 10 types of people in in the world: Those who understand binary and those who don't.
spid
Doom
Doom
Beiträge: 3580
Registriert: Apr 2001
Kontaktdaten:

Beitrag von spid »

HomicideSapiens hat geschrieben:bei einem fragmentierten Penis hat er größere Probleme als ungültige Zeichen.

On-Topic: Falls der String validiert werden muss, find ich regex keine schlechte Lösung. Ansonsten würde ich nichtmal zu split greifen (wer weis wie lang der string noch ist ;) ) sondern einfach den substring zwischen 2. und 3. leerzeichen nehmen.

Code: Alles auswählen

int l2=str.indexOf(' ',str.indexOf(' '));
int l3=str.indexOf(' ',l2);
string substr=str.subString(l2,l3);
einfach den string rückwärts suchen (in der annahme, daß es immer nur 4 blöcke gibt):

(java)
int l3 = str.lastIndexOf(' ');
int l2 = str.lastIndexOf(' ', l3-1);
[...]
saftig
Biker
Biker
Beiträge: 1025
Registriert: Jun 2001

Beitrag von saftig »

cut -d " " -f 3
Cpt.Gambit
Doom
Doom
Beiträge: 3599
Registriert: Jul 2003

Beitrag von Cpt.Gambit »

Ich bins wieder :)

Vorweg, in der Programmiersprache hier ist man sehr eingeschränkt, wer interesse hat:
http://publib.boulder.ibm.com/infocente ... HEFHB.html

Wie sagt man in nem regulären Ausruck, dass er nur die ersten Zeichen auf die er trifft mitnehmen soll?

Bsp:
(Test) Threshold reached for Slow Responses
Ich will das in den Klammern haben, recht einfach:
\((.*)\).*

Wenn nun aber weiterhinten im Text nochmal ne Klammer hab, parst er irgend nen Mist raus, speziell alles zwischen der Ersten Klammer auf und der Letzten Klammer zu.

(Test) Threshold reached for Slow Responses (Bla Blubb)

Wie sag ich dem, daß er nur die ersten Inhalt der Klammer betrachten soll?
Bild
zeeno
Uriel
Uriel
Beiträge: 2793
Registriert: Nov 2002
Kontaktdaten:

Beitrag von zeeno »

Der Fehler liegt bei deinem .* in der Klammer. Das ist zu gierig und schluckt drekt alles bis zur letzten geschlossenen Klammer.

Probier folgenden Regex aus

Code: Alles auswählen

\((\w+)\)
In PHP funktioniert es soweit.

Code: Alles auswählen

preg_match('/\((\w+)\)/','(Foo) du doofe Nuss (Bar) du doof',$match);
var_dump($match);
Liefert folgendes:

Code: Alles auswählen

array(2) { 
    [0]=>  string(5) "(Foo)" 
    [1]=>  string(3) "Foo" 
} 
Nicht von dem ersten Platz irritieren lassen. Da steht immer nochmal die ganze Zeichenkette drin die gefunden wurde (ohne Patterns). In diesem Fall (Foo).
Bild

Drum & Bass: Hartes oder Weiches

"Demokratie ist, wenn man sich aussuchen kann wer verarscht." - Hagen Rether
[/CENTER]
digitus
Uriel
Uriel
Beiträge: 2969
Registriert: Feb 2001

Beitrag von digitus »

Außer den * und + Operator von greedy auf stingy zu schalten (ging glaub auch mit ? dahinter), kann man auch einfach nach dem Komplement der schließenden Klammer suchen, bis zur nächsten schließenden Klammer.
Bild
Urstoff
Biker
Biker
Beiträge: 1018
Registriert: Sep 2008

Beitrag von Urstoff »

Davion3000 hat geschrieben:Unter Annahme der oben genannten Datenstruktur, geht es folgend ohne fette regexp Ausdrücke:
#~:awk '{ print $3 }' /foo/bar
-F muss nicht angegeben werden, weil Leerzeichen default Feldtrenner sind.
Dafür reicht selbst cut, da braucht man nicht dieses fette, träge awk anwerfen. :rolleyes:
Cpt.Gambit hat geschrieben:Bsp:
(Test) Threshold reached for Slow Responses
Ich will das in den Klammern haben, recht einfach:
\((.*)\).*

Wenn nun aber weiterhinten im Text nochmal ne Klammer hab, parst er irgend nen Mist raus, speziell alles zwischen der Ersten Klammer auf und der Letzten Klammer zu.

(Test) Threshold reached for Slow Responses (Bla Blubb)

Wie sag ich dem, daß er nur die ersten Inhalt der Klammer betrachten soll?
\((.*?)\).*
Antworten