Willkommen im #Neuland
Login wie bei quake.ingame.de zuvor, die Passwörter aus der alten Datenbank wurden aber gelöscht - einmal hier neu anfordern.
Wer seine E-Mail-Adresse nicht mehr hat oder kennt, bitte eine Nachricht mit Infos schicken o. im Discord melden.
PQ Discord Server: #planetquake Spenden? Hier entlang!
Login wie bei quake.ingame.de zuvor, die Passwörter aus der alten Datenbank wurden aber gelöscht - einmal hier neu anfordern.
Wer seine E-Mail-Adresse nicht mehr hat oder kennt, bitte eine Nachricht mit Infos schicken o. im Discord melden.
PQ Discord Server: #planetquake Spenden? Hier entlang!
[Help]regular expression
-
- Doom
- Beiträge: 3599
- Registriert: Jul 2003
[Help]regular expression
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 ?
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 ?
-
- Klesk
- Beiträge: 798
- Registriert: Jan 2003
-
- Doom
- Beiträge: 3599
- Registriert: Jul 2003
-
- Doom
- Beiträge: 3681
- Registriert: Mai 2001
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.
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.
-
- Doom
- Beiträge: 3599
- Registriert: Jul 2003
-
- Assist
- Beiträge: 5169
- Registriert: Feb 2007
#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.
Was soll denn daran zu groß sein?
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.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.
-
- Doom
- Beiträge: 3599
- Registriert: Jul 2003
-
- Humilation
- Beiträge: 10589
- Registriert: Dez 2006
- Kontaktdaten:
-
- Doom
- Beiträge: 3599
- Registriert: Jul 2003
-
- Uriel
- Beiträge: 2969
- Registriert: Feb 2001
Das glaub ich ja fast nicht. Auf Array-Indizes zugreifen können doch eigtl alle Sprachen, mehr brauchst du ja nicht.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.
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.
-
- Wrack
- Beiträge: 488
- Registriert: Nov 2000
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://rubular.com/
Benutz das gerne zum "on-the-fly" testen, ohne jedesmal Chars escapen zu müssen.
-
- Patriot
- Beiträge: 1303
- Registriert: Feb 2002
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
(?i:[a-f\d]+ ){2}([a-f\d]+) [a-f\d]+
für eclipse kann ich das plugin quickrex empfehlen.
und die regex von drluv ist viel zu lang und lesbar
(?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.
-
- Uriel
- Beiträge: 2793
- Registriert: Nov 2002
- Kontaktdaten:
http://regexpal.com/ gefällt mir besser.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.
-
- Wrack
- Beiträge: 488
- Registriert: Nov 2000
gebookmarked, falls rubular mal down sein solltezeeno hat geschrieben:http://regexpal.com/ gefällt mir besser.
-
- Sorlag
- Beiträge: 3855
- Registriert: Mai 2001
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.
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.
-
- Daemia
- Beiträge: 308
- Registriert: Jul 2000
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.
#~:awk '{ print $3 }' /foo/bar
-F muss nicht angegeben werden, weil Leerzeichen default Feldtrenner sind.
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)
-
- Administrator
- Beiträge: 23012
- Registriert: Jan 2000
- Wohnort: NRW
- Kontaktdaten:
-
- Patriot
- Beiträge: 1303
- Registriert: Feb 2002
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.
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.
-
- Doom
- Beiträge: 3580
- Registriert: Apr 2001
- Kontaktdaten:
einfach den string rückwärts suchen (in der annahme, daß es immer nur 4 blöcke gibt):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);
(java)
int l3 = str.lastIndexOf(' ');
int l2 = str.lastIndexOf(' ', l3-1);
[...]
-
- Doom
- Beiträge: 3599
- Registriert: Jul 2003
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?
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?
-
- Uriel
- Beiträge: 2793
- Registriert: Nov 2002
- Kontaktdaten:
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
In PHP funktioniert es soweit.
Liefert folgendes:
Nicht von dem ersten Platz irritieren lassen. Da steht immer nochmal die ganze Zeichenkette drin die gefunden wurde (ohne Patterns). In diesem Fall (Foo).
Probier folgenden Regex aus
Code: Alles auswählen
\((\w+)\)
Code: Alles auswählen
preg_match('/\((\w+)\)/','(Foo) du doofe Nuss (Bar) du doof',$match);
var_dump($match);
Code: Alles auswählen
array(2) {
[0]=> string(5) "(Foo)"
[1]=> string(3) "Foo"
}
-
- Biker
- Beiträge: 1018
- Registriert: Sep 2008
Dafür reicht selbst cut, da braucht man nicht dieses fette, träge awk anwerfen.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.
\((.*?)\).*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?