Seite 1 von 2

Vorschlag: Sammelthread für Reguläre Ausdrücke

Verfasst: 25.05.2008 16:54
von ThoPie
Was haltet ihr davon, einen Sammelthread für diverse reguläre Audrücke für die RegularExpression-Library anzulegen (E-Mail, Sozialversicherungsnummer, ISBN-Nummer etc.)? So muss nicht jeder das Rad noch einmal neu erfinden.

Verfasst: 25.05.2008 17:04
von STARGÅTE
kannst du doch anlegen, hindert dich doch keiner dran.
Obwohl man diese Teile ja Googlen kann, und am Syntax der reguläre Audrücke ändert sich ja nix, egal ob php, pb uder sonst was...

Ich persönlich kanns noch nicht gebrauchen weil man keinen zugriff auf die gespeicherten Bereiche hat, also bis jetzt nur das Abfragen gut geht, aber nicht das ersetzen

Verfasst: 25.05.2008 18:33
von AND51
Wir können diesen Thread ja benutzen, um nach speziellen Ausdrücken zu fragen. Andere können dann hier die Lösung posten und wiederum andere können sich in diesem Archiv bedienen und Lösungen suchen.

Aus dem Stand wüsste ich keinen speziellen Ausdruck, ich denke, es kommt meistens auf die Situation an, was man gerade programmiert.

Verfasst: 25.05.2008 18:42
von ts-soft
> Aus dem Stand wüsste ich keinen speziellen Ausdruck
Feststellen ob es sich um eine PB-Procedure handelt, zum Beispiel.
Das Word Procedure??????, Name mit A oder _ ansonsten Aplhanum und Klammern

Verfasst: 25.05.2008 18:49
von FGK
Ich finde das ne ganz nette Idee mit der Sammlung, aber
würde das nicht speziell hier neu im Board aufrollen
Dazu gibts haufenweise Sites im Netz wie z.b. http://regexlib.com/Search.aspx
Da kann man nach regexp Ausdrücken suchen und da ist für jede Gelegenheit was mit dabei.

Gruß FGK

Verfasst: 25.05.2008 20:54
von AND51
ts-soft hat geschrieben:> Aus dem Stand wüsste ich keinen speziellen Ausdruck
Feststellen ob es sich um eine PB-Procedure handelt, zum Beispiel.
Das Word Procedure??????, Name mit A oder _ ansonsten Aplhanum und Klammern
Meinst du sowas?

Code: Alles auswählen

proc$+"Procedure.b HelloWorld(param1.l, text$)"+#CRLF$
proc$+"	Protected TrulyMadlyDeeply.s"
proc$+"	TrulyMadlyDeeply="+#DQUOTE$+"Cascada"+#DQUOTE$+#CRLF$
proc$+"	ProcedureReturn 1<<Random(31) : EndProcedure ; SOGAR KOMMENTARE DÜRFEN HIER NOCH STEHEN  "

keineProc$+"sinn=42 : Procedure.c myAsc(character.s) : ProcedureReturn Asc(caharacter) ::EndProcedure : nochMehr=Code+ZumTesten"


Procedure.l isCodeAPBProcedure(code$)
	Static expression.l
	If Not expression
		expression=CreateRegularExpression(#PB_Any, "(?s)^\s*Procedure(|(|C)DLL|C)(|\.[a-zA-Z_]\w*) +[a-zA-Z_]\w*\(.*\)(\:|.+).*(\:|\s*)EndProcedure\s*(|\;.*\s*)$")
	EndIf
	ProcedureReturn MatchRegularExpression(expression, code$)
EndProcedure

Debug isCodeAPBProcedure(proc$)
Debug isCodeAPBProcedure(keineProc$)
Prüft, ob der übergebene Text eine Procedure in PB-Syntax ist.

Soll ich die einzelnen Teile des RegExp erläutern? Mach ich gern. <)

Verfasst: 25.05.2008 21:00
von ts-soft
> Soll ich die einzelnen Teile des RegExp erläutern?
Nein, da der Code die Aufgabe nicht erfüllt. ProcedureDLL wird zum Beispiel
nicht als Procedure erkannt. Fehlt wohl noch ne Menge :wink:

Verfasst: 25.05.2008 21:29
von edel

Code: Alles auswählen

(?i)^\s*procedure(dll|cdll|c|)(|\.\w+) +\w+\(.*\)

Verfasst: 25.05.2008 21:29
von AND51
ne Menge fehlt nicht, ich habe schon berücksichtigt, dass eine prozedur so sein kann:

Code: Alles auswählen

Procedure a():EndProcedure
aber auch so

Code: Alles auswählen

             Procedure.b            WasGanzLanges_(param, OptionalerParam$="()/&&,"):LOL=42

; nix besonderes
               result=45:ProcedureReturnresult:::::EndProcedure
Gibt's nochwas, was ich vergessen habe? Ich rüste meinen Code nach.

Verfasst: 25.05.2008 21:31
von edel
eine procedure muss immer mit endprocedure enden, daher reicht es wenn
du nur die erste Zeile ueberpruefst