Français
Source/ Codesnippets

Regex Tester transformateur

 

Michael
Wodrich
chez den regulären Ausdrücken kam mir qui concept eines eigenen Testprogrammes.

Aussi voulais je RexEx-Ausdrücke avec Backslash automatisch transformer laisser. mon Versuche anbei. qui Backslash avec nachfolgendem doppelten Anführungszeichen doit mais de main dans Backslash+q umgewandelt volonté.

Aussi müßen hierfür qui Escapezeichen ausgeschaltet volonté, là je sonst qui doppelten Backslashes oui pas wiederfinde...

qui Umwandler schlägt automatisch trop, si rien trouvé wurde - mais seulement un Anzeigevergleich.

qui Ergebnisse volonté dans den Editor geladen, qui sich chez *.TXT pour zuständig hält (ShellExec).
!
RegEx_Tester
ab XProfan 10
Set("Escape",0)
Déclarer CR$, Qu$
CR$ = Chr$(13) + Chr$(10)  Zeilenende
Qu$ = Chr$(34)  Doppelte Anführungszeichen
==========  Suchmuster et Beispiele  ==========
Déclarer Datei_Muster$, Datei_Test$
Datei_Muster$ = "(?mi)^[^~./:~*~?q<>~|]{1}[^/:~*~?q<>~|]{0,254}$"
Datei_Test$ = "abcd.jpg" + CR$ +
"a b239.abcd ef12983 298" + CR$ +
"a....23498" + CR$ +
".abcde.jpg" + CR$ +
"abcde?.jpg" + CR$ +
"c:\abcde.jpg" + CR$
Déclarer eMail_Muster$, eMail_Test$
eMail_Muster$ = "(?mi)^([a-zA-Z~d]+([-~.~w]*[a-zA-Z~d])*@([a-zA-Z~d][-~w]*[a-zA-Z~d]~.)+[a-zA-Z]{2,9})$"
eMail_Test$ = "joe@aol.com" + CR$ +
"ssmith@aspalliance.com" + CR$ +
"a@b.cc" + CR$ +
"joe@wrox.co.uk" + CR$ +
"joe@domain.info" + CR$ +
"e@eee.com" + CR$ +
"eee@e-e.com" + CR$ +
"eee@ee.eee.museum" + CR$ +
".@eee.com" + CR$ +
"@eee.com" + CR$ +
"eee@e-.com" + CR$ +
"eee@ee.eee.eeeeeeeeee" + CR$ +
"a@b" + CR$ +
"notanemail" + CR$ +
"joe@@." + CR$ +
"joe@123aspx.com" + CR$ +
"joe@web.info" + CR$ +
"joe@company.co.uk" + CR$
Déclarer Money_Muster$, Money_Test$
Money_Muster$ = "(?m)^(~x80|~x24|~xA3|~xA5|~x20AC|~x0024|~x00A3|~x00A5)?(([1-9]~d{0,2}(~,~d{3})*)|([1-9]~d*)|(0))(~.~d{2})?$"
Money_Test$ = "$1,234,567.89" + CR$ +
"1234567.89" + CR$ +
"1,234,567.89" + CR$ +
"$0.00" + CR$ +
"$1,2345,67.89" + CR$ +
"$1234,345,678.0" + CR$ +
"£1.25" + CR$ +
"¥15000" + CR$ +
"€4.37"  oui, cela liebe Euro-marque...
Déclarer Tel_Muster$, Tel_Test$
Tel_Muster$ = "(~+~d *)?(~(~d+~) *)?~d+(-~d*)*"
Tel_Test$ = "Phone of AlkorSoft (project PayCash) is +7(812) 329-44-69"
Déclarer Url_Muster$, Url_Test$
Url_Muster$ =	"(?i)" +   ignoriere large/petite
"((FTP|HTTPS|HTTP)://|www~.)" +   Protokoll (sans: www.)
"([~w~d~-]+:[~w~d~-]+@)?" +   User / Mot de passe
"([^/~r~n:]+)" +   TCP Adresse ou bien Domainname
"(:~d{1,5})?" +   Portnummer
"(((/[%+~w~d~-~.]*)+)*)" +   Unix-Pfad
"(~?[^~s=&]+=[^~s=&]+(&[^~s=&]+=[^~s=&]+)*)?" +   Abfrage- (GET) paramètre
"(#[~w~d~-%+]+)?"  HTML-ancre (Bookmark)
Url_Test$ = "https://192.168.0.2:80/users/~fname.lname/file.ext" + CR$ +
"ftp://user1:pwd@www.domain.com" + CR$ +
"ftp://download-store@www.domain.com" + CR$ +
"ftp://download-store.com/the_file.zip" + CR$ +
"https://www.dom" + CR$ +
"www.domain.com" + CR$ +
"user1:pwd@domain.com" + CR$ +
"192.168.0.2/folder/file.ext" + CR$ +
"https://192.168.0.2/folder/file.ext" + CR$ +
"https://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/reconbackreferences.asp" + CR$ +
"https://www.domain.com/folder" + CR$ +
"https://www.domain.com/folder/" + CR$
==========  Prozeduren  ==========

Proc RegEx_Umformer

    s'il te plaît tenir compte de: qui transformateur funktioniert seulement, si qui Escapezeichen ausgeschaltet sommes !!!
    aussi qui reguläre Ausdruck doit avec Set("Escape",0) erfaßt worden son.
    Sonderfall: Doppelte Anführungszeichen im String ersetzt on per main dans q, cela
    wird ensuite ici wieder geändert.
    RegEx-Escapezeichen:
    xnn     marque avec dem Hex-Code nn (ASCII-Text)
    x{nnnn} marque avec dem Hex-Code nnnn (un Byte pour ASCII-Text et deux Bytes pour Unicode-marque
    un tabulateur (HT/TAB), gleichbedeutend comment x09
    Zeilenvorschub (NL), gleichbedeutend comment x0a
    Wagenrücklauf (CR), gleichbedeutend comment x0d
    f       Seitenvorschub (FF), gleichbedeutend comment x0c
    a       Alarm (bell) (BEL), gleichbedeutend comment x07
    e       Escape (ESC), gleichbedeutend comment x1b
    \       Backslash selbst (behandelt qui transformateur)
    q       XProfan: Doppelte Anführungszeichen (behandelt qui transformateur)
    vordefinierte Klassen:
    w       un alphanumerisches marque inclusivement "_"
    W       ne...aucune alphanumerisches marque, aussi ne...aucune "_"
    d       un numerisches marque
    D       ne...aucune numerisches marque
    s       irgendein wörtertrennendes marque (entspricht [
    f])
    S       ne...aucune wörtertrennendes marque
    Wortgrenzen:
           findet une Wortgrenze (wohin w à W grenzt)
    B       findet alles ausser einer Wortgrenze
    Modifikatoren:
    (?i)     Führe qui cherche Schreibweisen-unabhägig par
    (?m)     Behandle den Zielstring comme mehrzeiligen String. cela bedeutet, ändere
    qui Bedeutungen de "^" et "$": Statt seulement den Anfang ou bien cela Ende des
    Zielstrings trop trouver, wird chacun Zeilenseparator dedans eines Cordes
    erkannt (beachte aussi qui Zeilenseparatoren)
    (?s)     Behandle den Zielstring comme einzelne la ligne. cela bedeutet, dass "." chaque
    beliebige marque findet, sogar Zeilenseparatoren, qui es normalement pas findet.
    (?g)     Modifikator pour den "Genügsam"-Modus. par cela Ausstellen volonté alle folgenden
    Operatoren dans den "Genügsam"-Modus geschaltet. Standardmassig sommes alle Operatoren
    "gierig". si alors qui Modifikator (?-g) aus ist, ensuite arbeitet + comment +?, * comme *? etc.
    Kommentar:
    (?#text) "text" ist Kommentar (darf aucun schliessende Klammer beinhalten).
    Paramètres dans$
    Déclarer out$, i%
    out$ = Translate$(dans$,"\",Chr$(250))  räume alle Doppel-Backslashes aus dem Weg
    out$ = Translate$(out$,"q",Chr$(34))  Sonderfall doppelte Anführungszeichen
    out$ = Translate$(out$,»,"~")  ändere cela Escapezeichen
    out$ = Translate$(out$,Chr$(250),»)  lieu den gewünschten Backslash wieder her
    out$ = Translate$(out$,"[a-zA-Z0-9]","[a-zA-Z~d]")
    out$ = Translate$(out$,"[0-9a-zA-Z]","[a-zA-Z~d]")
    out$ = Translate$(out$,"[a-zA-Z0-9_]","[~w]")
    out$ = Translate$(out$,"[_0-9a-zA-Z]","[~w]")
    out$ = Translate$(out$,"[0-9]","[~d]")
    out$ = Translate$(out$,"[^a-zA-Z0-9]","[^a-zA-Z~d]")
    out$ = Translate$(out$,"[^ 0-9a-zA-Z]","[^a-zA-Z~d]")
    out$ = Translate$(out$,"[^a-zA-Z0-9_]","[~W]")
    out$ = Translate$(out$,"[^_0-9a-zA-Z]","[~W]")
    out$ = Translate$(out$,"[^0-9]","[~D]")
    Retour out$

ENDPROC

Proc ZeigMal

    Paramètres Text$
    Déclarer f$, hF&, B#
    f$ = $TempDir + "TEMP_RegEx_Tester.txt"
    Faible B#,Len(Text$)+1
    String B#,0 = Text$
    BlockWrite f$,B#,0,Len(Text$)    Erstelle temp. Dossier...
    Dispose B#
    ShellExec(f$,"open",1)           zeige vous à...

    Repeat

        hF& = FindWindow( "TEMP_RegEx_Tester" )   attends jusqu'à cela la fenêtre  ist...

    Until hF& <> 0

    Effacer f$   et entferne qui Dossier wieder. avec dem Editor peux cela Ergebnis quand même gesichert volonté.

ENDPROC

Proc RegEx_Tester

    Paramètres RegEx$, Text$
    Déclarer Erg$, s$, RestText$, Offset&, oldDeci%, index%
    oldDeci% = Set("Décimal",0)
    Offset& = 1
    RestText$ = Text$

    Si Len(Text$) < 80

        Erg$ = "Suchtext: " + Qu$ + Text$ + Qu$ + CR$
        Erg$ = Erg$ + Space$(11) +
        Si(Len(Text$) >= 10,
        $ MkStr("1234567890",Len(Text$)  10) + Left $("1234567890",Len(Text$) mod 10),
        Left $("1234567890",Len(Text$) mod 10)) + CR$ + CR$

    D'autre

        Erg$ = "Suchtext:" + CR$ + Text$ + CR$ + CR$

    EndIf

    Erg$ = Erg$ + "regulärer Ausdruck:" + CR$ + RegEx$ + CR$ + CR$
    Erg$ = Erg$ + "Ergebnis:" + CR$
    s$ = Match$(RegEx$,RestText$)

    Tandis que s$ <> »

        Inc index%
        Erg$ = Erg$ + "Match " + Str$(index%) + ": " + Qu$ + s$ + Qu$ +
        ", Len: " + Str$(%MatchLen) +
        ", Pos: " + Str$(%MatchPos) +
        ", GesamtPos: " + Str$(Offset& + %MatchPos - 1) + CR$
        Offset& = Offset& + %MatchPos + %MatchLen - 1
        RestText$ = Mid $(Text$,Offset&,Len(Text$))
        s$ = Match$(RegEx$,RestText$)

    Endwhile

    Si non index%

        Erg$ = Erg$ + "*** aucun Treffer ***" + CR$ + CR$
        Erg$ = Erg$ + "Wurden peut-être qui Escapezeichen pas ajusté? ici une la comparision." + CR$
        Erg$ = Erg$ + "alt: " + Qu$ + RegEx$ + Qu$ + CR$
        Erg$ = Erg$ + "neu: " + Qu$ + RegEx_Umformer( RegEx$ ) + Qu$ + CR$

    EndIf

    Set("Décimal",oldDeci%)
    Retour Erg$

ENDPROC

==========  Hauptprogramm  ==========
ZeigMal RegEx_Tester( "(?i)[e]+","Proc RegEx_Tester" )
ZeigMal RegEx_Tester( "(w+)?","Proc RegEx_Tester" )  zum Testen
ZeigMal RegEx_Tester( Datei_Muster$, Datei_Test$ )
ZeigMal RegEx_Tester( eMail_Muster$, eMail_Test$ )
ZeigMal RegEx_Tester( Money_Muster$, Money_Test$ )
ZeigMal RegEx_Tester( Tel_Muster$, Tel_Test$ )
ZeigMal RegEx_Tester( Url_Muster$, Url_Test$ )
Set("Escape",1)
Fin

belle Grüße
Michael Wodrich
 
Programmieren, das spannendste Detektivspiel der Welt.
17.06.2006  
 



Zum Quelltext


Topictitle, max. 100 marque.
 

Systemprofile:

ne...aucune Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

s'il te plaît s'inscrire um une Beitrag trop verfassen.
 

Options du sujet

4.937 Views

Untitledvor 0 min.
H.Brill17.11.2023
RudiB.26.04.2022
Jörg Sellmeyer15.05.2018
Alibre01.05.2018
plus...

Themeninformationen

cet Thema hat 1 participant:

Michael Wodrich (1x)


Admins  |  AGB  |  Applications  |  Auteurs  |  Chat  |  protection des données  |  Télécharger  |  Entrance  |  Aider  |  Merchantportal  |  Empreinte  |  Mart  |  Interfaces  |  SDK  |  Services  |  Jeux  |  cherche  |  Support

un projet aller XProfaner, qui il y a!


Mon XProfan
Privé Nouvelles
Eigenes Ablageforum
Sujets-La liste de voeux
Eigene Posts
Eigene Sujets
Zwischenablage
Annuler
 Deutsch English Français Español Italia
Traductions

protection des données


Wir verwenden Cookies seulement comme Session-Cookies à cause de qui technischen Notwendigkeit et chez uns gibt es aucun Cookies de Drittanbietern.

si du ici sur unsere Webseite klickst ou bien navigierst, stimmst du unserer Erfassung de Informationen dans unseren Cookies sur XProfan.Net trop.

Weitere Informationen trop unseren Cookies et en supplément, comment du qui Kontrolle par-dessus behältst, findest du dans unserer nachfolgenden Datenschutzerklärung.


d'accordDatenschutzerklärung
je voudrais keinen Cookie