ForumBrauche Hilfe Regular Expressions
Frank Gabbert – Mittwoch, 18. Mai 2005 13:19 Uhr

Hallo liebe Community,

ich hab mich jetzt mal grad 1 Stunden lang mit REs beschäftigt aber ich komm nicht druff warum 2 Teile nicht funktionieren! :(
Diese wurden nicht von mir erstellt, ein Entwickler meinte sie funktionieren in meinem Tool, dass ich im hier integriere, nicht…!
Weiter komm ich nicht mit dem klar! Was dies bedeuten soll!
Könnt ihr mir helfen!? Wer super… bin voll im Stress! Release… grrr und es kommen nur Fehlermeldungen rein, was ja eigentlich gut ist vorm Release… aber der Tremin wird immer enger und enger…!

Assignments:
\[ \t]*\([-+*/%&|^]\|\)\?=[^=]

Comparissons:
\[\t]*\(==\|!=\|>=\|[^>]\|=\|[^\|[^

3 Antworten
burnstone – Mittwoch, 18. Mai 2005 13:23 Uhr

Hi Frank

1. WAS für REs sind das? (Für welche Sprache/welches Programm? Perl, Java, C (welches Modul), grep, …?)
2. Was willst du eigentlich genau damit machen? (suchen, ersetzen, …)
3. Nach was willst du suchen?
4. Was soll rauskommen dabei?

Gruss

burnstone

Frank Gabbert – Mittwoch, 18. Mai 2005 14:00 Uhr

Hi burnstone,

Zu:

1. Das sind TCL/TK REs! Sie werden hier bei GREP benötigt zur differnzierten ausgabe! Also als Zusatzoption um genauere Treffer zu erzielen!
2. Also in dem Fall handelt es sich um eine Suche!
3. Naja nachdems ein Grep ist sucht er in einem File nach Codestellen die das Pattern beinhalten, dass man als Suchstring angibt!
4. Ein Ergebnis :) Bei den anderen erscheint eins nur eben nicht bei diesen beiden! :-/ Ich bin mittlerweile der Meinung, dass es hier einfach kein Ergebnis gibt, aber dass will ich erst beweisen, ist ja nur ne Theorie und Theorien sind ja bekanntlich immer wahr bis sie bewiesen werden!

Ich habe mittlerweile herausgefunden für was *\* steht! Es handelt sich hier um das Pattern (String) der so übergeben wird.
Ist aber ne Vermutung! :)
Wenn schon Ideen bestehen wer ich echt Dankbar!

Übrigens handelt es sich um das Tool: “Source-Navigator” von RedHat in der Version 5.2b2, der letzten die erschien.

Im Anhang ein Screenshot!

[1] http://www.frank.ritso.de/uploads/pics/screenshots/Grep-Assignments.jpg
[2] http://www.frank.ritso.de/uploads/pics/screenshots/Grep-auswahl.jpg
[3] http://www.frank.ritso.de/uploads/pics/screenshots/Grep-comparisons.jpg
[4] http://www.frank.ritso.de/uploads/pics/screenshots/Grep-whole_words.jpg

Murphy – Mittwoch, 18. Mai 2005 15:02 Uhr

Bei dem Versuch diese Ausdrücke aufzudröseln bin ich darüber gestolpert daß so viele Escapes drinstehen (z. B. vor der Oder-Pipe); wäre es möglich daß die euch das Konzept verhageln oder ist das bei TCL einfach so? Da du aber nicht angibst welche Patterns damit gefunden werden sollen ist es schwierig da was rauszulesen… Wie wär’s mit ‘nem Beispiel oder einfach mehr Kontext zu dem Problem?

Jan Kandziora – Donnerstag, 19. Mai 2005 09:24 Uhr

man n re_syntax kennst du aber? Zudem verwendet tcl eine etwas andere RE-Syntax (AREs) als sed oder perl.

%s ist die übliche Form einer Textersetzung in tcl. Also kein Teil der Regular Expression. Ohne tcl-Kenntnisse kommst du hier nicht weiter.

Jan

Frank Gabbert – Freitag, 20. Mai 2005 09:24 Uhr

Hi Jan,

also

man n re_snytax

dafür gibt es bei uns keine Manual Pages…! :-/

Das mit %s hab ich schon rausgefunden, danke. Und weiss auch das es eigentlich nicht zu den REs gehört.

Aber irgendwie macht der was sehr komisches! Ja das mit den Escapes mag stimmen, teste mir das jetzt mal durch…!

Wir dachten erst der Grep versteht einfach die Syntax nicht, z.B. steht beim ersten RE Pattern ein “&” mit drinnen… Das checkt er irgendwie nicht, komische Sache…
Ich muss dazu sagen ich habe erst mit TCL/TK angefange…! Ab und an a weng strange aber es geht im Grunde. Muss ja auch :)

Also z.B. will ich aus einem oder mehreren *.cpp’s nur eine Variablen definition ausgeben lassen ala “Affe = 5”

Das sollte ja der erste RE Pattern machen, den zweiten hab ich mir noch nicht so genau angeschaut, weil ich erstmal den ersten zum laufen bringen möchte!

Habt ihr ne Idee wie ich das Ganze neu formulieren könnte, ohne das “&”!?

Gruss
Frank

Jan Kandziora – Sonntag, 22. Mai 2005 15:21 Uhr

man n re_syntax

Und man 3tcl re_syntax? Debian macht eben alles wieder anders — tcl überhaupt installiert?

Und ja, grep wird diese Syntax nicht verstehen, weil grep BREs und EREs versteht wie sed, nicht AREs.

Jan

Frank Gabbert – Montag, 23. Mai 2005 14:42 Uhr

Hi,

jap TCL ist drauf… :) Sonst hätte ich den SNAV ja nicht starten können!
Debian verwende ich nicht, ich arbeite unter SUN/Solaris sprich Unix!

Also was ich noch anmerken wollte \ ist kein TCL Kommando es gehört also jedenfalls \< \> gehört zu den RGs hinzu!

Ich hab mir jetzt mal ein Testfile erstellt!
Sprich eins das habe ich bla.cpp genannt und besitzt einen Inhalt mit verschieden wirren Zuweisungen etc.

Das andere File beinhaltet ein grep Kommando:
grep -n — myDrvType [\t]*\([-+*/%&|^]\|\)\?=[^=] test_grep_file.cpp

wenn ich nun dieses File ausführe sagt er mir bis jetzt immer:
grep-assignments: syntax error at line 8: `|’ unexpected

Jap aber ich weiss net warum…! Funzt das in dem Falle nicht! Oder ist das & falsch…! Selbst einer unsere Super TCL Leute der sich auch recht gut mit REs auskennt, hat gemeint, er weiss es auf die schnelle nicht und er hat ka Zeit bla! Wie jeder hier…! grml

Komische Sache! Vielleicht fällt euch was auch was uns noch nicht augefallen ist! Ich werde das jetzt auch mal weiter auseinander pfrimeln!

Mfg
Frank

Ingo Fischenich – Mittwoch, 25. Mai 2005 17:25 Uhr

Die Frage ist ein bißchen aus dem Zusammenhang gerissen, oder?
Ein bißchen mehr code drumherum würde (zumindest mir) es einfacher machen, Deine Frage zu beantworten.

Frank Gabbert – Dienstag, 23. August 2005 17:18 Uhr

Ja habe mir gerade diesen Wirren Beitrag von mir durchgelesen, er entstand unter Termindruck :-/

Die Lösung war am Ende sehr Simpel:
Die alte Version des Sourcenavigator bringt von hausaus einen eigenen GREP mit.
Die neue nicht.
Wir haben einfach die alte Version in die Neue imporitert und volá es funktionierte.

Trotzdem danke für die Antworten und entschuldigung für die teilweise Wirren Kommantare meinerseits.

Viele Grüße
Frank