Deutsch
Quelltexte/ Codesnippets

Einige Match Suchmuster

 
- Seite 1 -



Nico
Madysa
Ab XProfan10 gibt es den Befehl Match$, mit dem geprüft wird, ob ein Sting einem bestimmten Muster entspricht, also z.B. zuerst ein Großbuchstabe kommt, dann 3 Kleinbuchstaben, ein Leerzeichen und danach 3 Ziffern. Ich habe hier einiges gesammelt mit einem kleinen Beispielprogramm:
KompilierenMarkierenSeparieren
Def $Name   "[A-ZÄÖÜ]([a-zäöü]+|~.)(~-[A-ZÄÖÜ]([a-zäöü]{2,}|~.))* [A-ZÄÖÜ]([a-zäöü]+|~.)(~-[A-ZÄÖÜ]([a-zäöü]{2,}|~.))*"
Def $Time   "((0|1|)[0-9]|2[0-3]):[0-5][0-9](:[0-5][0-9])?"
Def $Vorw   "[1-9][0-9]{1,4}"
Def $Telnum "[1-9][0-9]{4,7}"
Def $Url    "(https://)?(www~.)?[^@|²³.]{1,}(~.[^@|²³  .]{2,3}){1,3}"
Def $Street "([A-Z][a-z]{2,}~.? )+(0[1-9][0-9]*|[1-9][0-9]*)"
Def $Plz    "[0-9]{5} [A-Z][a-z]{2,}"
Def $RoemM  "M*"
Def $RoemC  "(C[DM]|C[DM]|D?C{0,3})?"
Def $RoemX  "(X[LC]|X[LC]|L?X{0,3})?"
Def $RoemI  "(I[VX]|I[VX]|V?I{0,3})?"
Declare E& , T& , Roem$ , Addr$ , Tel$ , XTel$
Roem$ = "^" + $Roemm + $Roemc + $Roemx + $Roemi + "$"
Addr$ = "^" + $Name + "(
|[,;] )" + $Street + "(
|[,;] )" + $Plz + "$"
Tel$  = "^(0"+$Vorw+"/)?"+$Telnum+"$"
XTel$ = "^((~+49 ("+$Vorw+"|~(0"+$Vorw+"~))|0049 "+$Vorw+"|~(0049 "+$Vorw+"~)|0"+$Vorw+"|~(0"+$Vorw+"~)) )?"+$Telnum+"$"
+49 30 12345678
+49 (030) 12345678
0049 30 12345678
(0049 30) 12345678
030 12345678
(030) 12345678
12345678
Window 300 , 200 - 200 , 200
Cls External("User32","GetSysColor",15)
E& = Create("MultiEdit",%Hwnd,"",5,05,180,(-20))
T& = Create("Text",%Hwnd,"",5,30,180,160)

Whilenot IsKey(27)

    Waitinput
    Match$(XTel$,Gettext$(E&))<- Addr$ durch zu testende Konstante/Variable ersetzen

    If %Matchpos >= 0

        Settext T& , $Match

    Else

        Settext T& , "ungültig"

    Endif

Wend


$Name = Vorname + Nachname Doppelnamen sind mittels Bindestrich möglich
$Time = hh:mm oder hh:mm:ss
$URL = Internetadresse, z.B. [...]  leider auch www.de
$Street = Straßenname + Hausnummer, z.B. Str. des Friedens 1
$PLZ = Postleitzahl + Ort, z.B. 02979 Burghammer
Roem$ = Römischess Zahlzeichen, z.B. CXVII
Addr$ = komplette Adresse, durch Chr$(13), Komma oder Semikolon getrennt.
Tel$ = Festnetznummer, auch mit Vorwahl möglich, z.B. 011111/99999
XTel$ = erweiterte Festnetznummer, folgende Formate sind möglich:
+49 30 12345678
+49 (030) 12345678
0049 30 12345678
(0049 30) 12345678
030 12345678
(030) 12345678
12345678
Kritik und Meinung sind ausdrücklich erwünscht.
 
Nico Madysa
09.06.2006  
 



 
- Seite 1 -



RGH
Außerdem setzt sich immer mehr die internationale Schreibweise mit Bindestrich durch:

+49-30-1234567
+4930-1234567

oder gar ohne alle Trennzeichen (wird gerne auch bei Handynummern verwandt):

+49301234567

Nicht zu vergessen die Versionen mit 00 statt +.

Am besten sollte man Leerzeichen, Bindestriche und Klammern einfach ausfiltern. Es könnten ja bei Nenenstellenanlagen noch weitere Bestandteile folgen:

+49-30-123456-78

Gruß
Roland
 
Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4
12.06.2006  
 




Michael
Wodrich
Habe beim Regulator wohl nicht konvertiert??!?

Aber das kann man ja von Hand nachholen. Bei der Prüfung fällt übrigens auf, das man nicht mit den runden Klammern so herumwerfen sollte. Die haben nämlich eine ganz klare eigene Funktion.

Die regulären Ausdrücke also bitte ohne die runden Klammern.

Schöne Grüße
Michael Wodrich
 
Programmieren, das spannendste Detektivspiel der Welt.
13.06.2006  
 




Clemens
Meier
[quote:3a4ca13962=Michael Wodrich]
Die regulären Ausdrücke also bitte ohne die runden Klammern.
[/quote:3a4ca13962]
Verstehe ich nicht, wie kann man reguläre Ausdrücke ohne runde Klammern erstellen. Die sind ein absolutes Muss um sogenannte Subpattern zu bilden.
 
XProfan 9.1; XP SP2; FF; Editpad
13.06.2006  
 




Michael
Wodrich
Richtig, der Name fiel mir nicht so schnell ein...
 
Programmieren, das spannendste Detektivspiel der Welt.
13.06.2006  
 



 
- Seite 2 -



Nico
Madysa
Hossa, Torsten hatte recht. Mit einem kleinen Langeweile-Schnipsel kann man scheinbar eine große Diskussion auslösen!
 
Nico Madysa
14.06.2006  
 




Clemens
Meier
Warte ab, bis XProfan 10 offiziell erschienen ist. Dann wird iF ein eigenes Forum für reguläre Ausdrücke öffnen müssen. (Die spinnen doch, die Programmierer)
 
XProfan 9.1; XP SP2; FF; Editpad
14.06.2006  
 




Nico
Madysa
So, habe die Sache jetzt bearbeitet. Statt $Tel habe ich jetzt Tel$ und XTel$ (extended telephon number). Tel$ ist im Format (Vorwahl/)Nummer,
XTel$ untersützt folgende Formate:
+49 30 12345678
+49 (030) 12345678
0049 30 12345678
(0049 30) 12345678
030 12345678
(030) 12345678
12345678

@Clemens: In Tel$ muss die erste Ziffer der Vorwahl eine 0 sein, das ist nämlich die sogenannte Verkehrsausscheidungsziffer, mit der Ferngespäche von Ortsgesprächen unterschieden werden. Anrufe in andere Länder müssen mit zwei Nullen beginnen (in Nummernangaben auch mit +), wobei die Null der Vorwahl wegfällt.

Freitag werde ich wohld en neuen Code reinstellen.
Hab ihn grad nich dabei ...
 
Nico Madysa
15.06.2006  
 




Clemens
Meier
[quote:b9be02c293=Nico Madysa]
@Clemens: In Tel$ muss die erste Ziffer der Vorwahl eine 0 sein, das ist nämlich die sogenannte Verkehrsausscheidungsziffer, mit der Ferngespäche von Ortsgesprächen unterschieden werden. Anrufe in andere Länder müssen mit zwei Nullen beginnen (in Nummernangaben auch mit +), wobei die Null der Vorwahl wegfällt.[/quote:b9be02c293]
Das ist soweit richtig, habe nie etwas anderes behauptet.
 
XProfan 9.1; XP SP2; FF; Editpad
15.06.2006  
 




Nico
Madysa
Habe ich auch nicht geschrieben.
Wollte die Information nur gegeben haben.
 
Nico Madysa
16.06.2006  
 




Nico
Madysa
Nun ja ... ähm ... hörtmazu, lustige ... Geschichte ...
Mir hatte mein Computer etwas merkwürdige Geräusche gemacht.
Da habe das Teil heruntergefahren, meinen 10-Tonnen-Röhrenbildschirm
abgestöpselt und auf mein Bett gestellt, die Hülle meines Computers abgenommen. Siehe da, der Ventilator war recht verstaubt. Ich also das Teil abgestaubt, ganz vorsichtig natürlich, auch mal kurz reingepustet. Also det Teil abgestaubt, PC-Hülle wieder raufgeklippt, 10-Tonnen-Röhrenbildschirm wieder draufgestellt(nein, ich habe keinen Tower), wieder alles schön zusammengetüddelt, angeschalten wunderbar.
... bis Windows gestartet ist. Sobal der (bei mir Standart-Grüne) Desktop angezeigt werden soll, wird alles schwarz. Und da macht sich die Disketten-Ansteuerung recht schwer.
Ich brauch jetzt keine Tipps, davon habe ich schon genug, und ich habe auch schon das Match$-Programm neu geschrieben.
Jedenfalls ich habe $Tel rausgefeuert, stattdessen habe ich $Vorw und $Telnum. Und dann noch zwei Vaiablen Tel$ und XTel$. Tel$ unktioniert wie vorher also
0Vorwahl/Nummer , bzw. Nummer
.Und XTel akzeptiert folgende Angaben:
+49 30 12345678
+49 (030) 12345678
0049 30 12345678
(0049 30) 12345678
030 12345678
(030) 12345678
12345678
Um die Sache hier etwas kürzer zu halten, habe ich einfach den ersten Beitrag editiert, dort ist also der neue Code zu finden.
Viel Spaß beim Fehler suchen/finden.
 
Nico Madysa
16.06.2006  
 




Nico
Madysa
Nanü? Drei Versionen und schon perfekt?
Oder habe ich meine Fehler so gut versteckt, dass die niemand findet?
 
Nico Madysa
23.06.2006  
 




Michael
Wodrich
Schau Dir doch mal unter den Code-Snippets den RegEx-Tester an.

Definiere alle möglichen und unmöglichen Eingaben und teste Sie damit durch.

Du mußt nur beachten das ich dort die Escapesequenzen ausgeschaltet habe...

Schöne Grüße
Michael Wodrich
 
Programmieren, das spannendste Detektivspiel der Welt.
24.06.2006  
 




Zum Quelltext


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

11.290 Betrachtungen

Unbenanntvor 0 min.
RudiB.28.08.2022
Walter03.12.2020
Andre Rohland08.09.2018
Peter Max Müller23.11.2017
Mehr...

Themeninformationen



Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie