reguläre Ausdrücke

Hier kann alles mögliche diskutiert werden. Themen zu Purebasic sind hier erwünscht.
Flames und Spam kommen ungefragt in den Mülleimer.
Benutzeravatar
Ynnus
Beiträge: 855
Registriert: 29.08.2004 01:37
Kontaktdaten:

Beitrag von Ynnus »

Das simbolisiert, dass dies keine Variable sondern ein Pointer ist. Freak hat dazu mal ein Tutorial geschrieben, solltest du dir unbedingt ansehen (hab ich neulich auch zum 2ten Mal schon gelesen...):
Direktlink von Purearea.net: http://www.purearea.net/pb/download/tut ... ointer.zip
Frosch
Beiträge: 52
Registriert: 08.09.2004 00:39
Kontaktdaten:

Beitrag von Frosch »

@Sunny,

ich dachte die Pointer werden mit ? angegeben. Oder hab ich da was falsch in Erinnerung. Komisch ist auch, dass das Ganze auch ohne das Sternchen funktioniert.

Das ganze Ding mit den regulären Ausdrücken ist eh seltsam, ich habe als weiteres Zeichen ein Komma zugefügt, das funktioniert aber nur, wenn es vor den restlichen Zeichen steht.

Gruß Ralf
Benutzeravatar
benny
Beiträge: 383
Registriert: 29.08.2004 09:18
Wohnort: Am Ende des www's
Kontaktdaten:

Beitrag von benny »

@Frosch:

Also mit einem ? bekommt man die Adresse von Labels zurück.

Zu den regülären Ausdrücken kann ich Dir nur Recht geben. Bisher
blicke ich dort auch noch nicht durch. Ich wäre auch froh, wenn die
Hilfe von Flo's Lib ein wenig ausführlicher wäre.

Desweiteren scheint es verschiedene Implementierungen von Regular
Expressions zu geben. Und ich weiß nicht inwieweit diese alle konform sind,
bzw. in der Lib umgesetzt sind. In der Beschreibung steht ja:
This library, based on a library developed several years ago by Henry
Spencer at the University of Toronto, adds some functions for using a
subset of Perl Regular Expressions in PureBasic.
Und was nun mit diesem "subset of Perl Regular Expressions" gemeint
ist, ist mir leider vollkommen unklar.

Zu den Problem mit dem Komma, so könnte es sein, dass es sich um ein
Spezialcharakter handelt, welches man in dem regulären Ausdruck mit
einer Art Escapezeichen deklarieren muss ( manchmal '\' ).

Wie es genau geht, kann ich Dir aber leider nicht sagen.... :cry:
So long,
benny!
.
nur t0te f1sche schw1mmen m1t dem str0m - 00100 !
Benutzeravatar
freedimension
Admin
Beiträge: 1987
Registriert: 08.09.2004 13:19
Wohnort: Ludwigsburg
Kontaktdaten:

Beitrag von freedimension »

Ich weiß ja nicht, aber schießt du da nicht mit Spatzen auf Kanonen? Eine von Hand geschriebene Funktion hätte es hier auch getan und wäre vermutlich schneller und kleiner, auch (oder gerade eben) ohne Reguläre Ausdrücke ;-)
Die sind nämlich eigentlich dafür gedacht komplexere Zusammenhänge in Strings zu erkennen/ersetzen.
Beginne jeden Tag als ob es Absicht wäre!
Bild
BILDblog
Frosch
Beiträge: 52
Registriert: 08.09.2004 00:39
Kontaktdaten:

Beitrag von Frosch »

@freedimension,

wie würdest Du eine solche funktion realisieren? Ist das nicht viel umständlicher?

Gruß Ralf
Agent
Beiträge: 296
Registriert: 13.09.2004 11:28
Kontaktdaten:

Beitrag von Agent »

Morsche!

Sorry, bin hier zufällig reingestolpert:

RegComp () und RegExed()

wo gibts dass denn? sind das procs von dir? Ist doch kein regulärer Befehl von PB oder?
Agent_Sasori
It's not a bug - it's a feature!
http://www.StephenKalisch.de | http://www.ria-tec.com | http://www.dirsync.de
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8677
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 32 GB DDR4-3200
Ubuntu 22.04.3 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken
Kontaktdaten:

Beitrag von NicTheQuick »

Wenn man nur testen will, ob gültige Zeichen benutzt wurden, würde ich das so machen.

Code: Alles auswählen

Dim AllowedChars.l(255)
Procedure SetAllowedChars(*AllowedChars.BYTE)
  Protected a.l
  For a = 0 To 255
    AllowedChars(a) = #False
  Next
  While *AllowedChars\b
    AllowedChars(*AllowedChars\b & $FF) = #True
    *AllowedChars + 1
  Wend
EndProcedure

Procedure TestAllowedChars(*String.BYTE)
  While *String\b
    If AllowedChars(*String\b & $FF) = 0 : ProcedureReturn #False : EndIf
    *String + 1
  Wend
  ProcedureReturn #True
EndProcedure

SetAllowedChars(@"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890-.%")

Debug TestAllowedChars(@"Hallo")
Debug TestAllowedChars(@"Nummer123")
Debug TestAllowedChars(@"www.ich-bin-da.de")
Debug TestAllowedChars(@"das geht nicht")
Debug TestAllowedChars(@"das%20geht%20auch%20nicht!")
Bild
Frosch
Beiträge: 52
Registriert: 08.09.2004 00:39
Kontaktdaten:

Beitrag von Frosch »

@NicTheQuick,

super, DANKE! das werd ich mir jetzt mal genauer ansehen, ich denke das kann ich gebrauchen. Du kannst mir doch bestimmt das Sternchen erklären oder?

Code: Alles auswählen

*AllowedChars\b
Ist das ein Pointer? Ich bin leider nicht so fit, was das Programmieren angeht, die Sache mit den Regulären Ausdrücken hatte ich aus einem PHP Buch übernommen und in einem Domainchack eingesetzt. Deshalb bin ich auf die Idee gekommen es in PB einzusetzen.

@Agent,

RegComp () und RegExed() sind aus der Userlib.

Hm, eigentlich gehört dieser Tread garnicht mehr in die Laberecke ;-)

Gruß Ralf
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8677
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 32 GB DDR4-3200
Ubuntu 22.04.3 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken
Kontaktdaten:

Beitrag von NicTheQuick »

Ich erkläre das jetzt nicht alles nochmal. Lies dir nochmal den Post von Sunny durch. Hier ist er, damit du nicht hochscrollen musst. :wink:
Sunny hat geschrieben:Das simbolisiert, dass dies keine Variable sondern ein Pointer ist. Freak hat dazu mal ein Tutorial geschrieben, solltest du dir unbedingt ansehen (hab ich neulich auch zum 2ten Mal schon gelesen...):
Direktlink von Purearea.net: http://www.purearea.net/pb/download/tut ... ointer.zip
Bild
Antworten