Español
Fuente/ Codesnippets

Regex Tester Umformer

 

Michael
Wodrich
En el regulären Ausdrücken kam me el Concepto uno eigenen Testprogrammes.

Außerdem Yo quería RexEx-Ausdrücke con Backslash automáticamente umwandeln dejar. Mi Versuche anbei. Der Backslash con nachfolgendem doppelten Anführungszeichen muß aber a mano en Backslash+q umgewandelt voluntad.

Außerdem müßen esta el Escapezeichen ausgeschaltet voluntad, como Yo sonst el doppelten Backslashes sí no wiederfinde...

Der Umwandler schlägt automáticamente a, si nichts gefunden wurde - aber sólo una Anzeigevergleich.

El Ergebnisse voluntad en el Editor geladen, el se en *.TXT para zuständig hält (ShellExec).
!
RegEx_Tester
de XProfan 10
Conjunto("Escape",0)
Declarar CR$, Qu$
CR$ = Chr$(13) + Chr$(10)  Zeilenende
Qu$ = Chr$(34)  Doppelte Anführungszeichen
==========  Suchmuster y Beispiele  ==========
Declarar 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$
Declarar 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$
Declarar 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"  , el liebe Euro-Signo...
Declarar Tel_Muster$, Tel_Test$
Tel_Muster$ = "(~+~d *)?(~(~d+~) *)?~d+(-~d*)*"
Tel_Test$ = "Phone of AlkorSoft (project PayCash) is +7(812) 329-44-69"
Declarar Url_Muster$, Url_Test$
Url_Muster$ =	"(?i)" +   ignoriere Groß/Klein
"((FTP|HTTPS|HTTP)://|www~.)" +   Protokoll (sin: www.)
"([~w~d~-]+:[~w~d~-]+@)?" +   User / Contraseña
"([^/~r~n:]+)" +   TCP Adresse oder Domainname
"(:~d{1,5})?" +   Portnummer
"(((/[%+~w~d~-~.]*)+)*)" +   Unix-Pfad
"(~?[^~s=&]+=[^~s=&]+(&[^~s=&]+=[^~s=&]+)*)?" +   Abfrage- (GET) Parámetro
"(#[~w~d~-%+]+)?"  HTML-Anker (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

    Bitte beachten: el Umformer funktioniert sólo, si el Escapezeichen ausgeschaltet son !!!
    Auch el reguläre Ausdruck muß con Conjunto("Escape",0) erfaßt worden se.
    Sonderfall: Doppelte Anführungszeichen en el String ersetzt uno por Hand en q, el
    se entonces hier otra vez geändert.
    RegEx-Escapezeichen:
    xnn     Signo con el Hex-Code nn (ASCII-Texto)
    x{nnnn} Signo con el Hex-Code nnnn (una Byte para ASCII-Texto y zwei Bytes para Unicode-Signo
    una Tabulator (HT/TAB), gleichbedeutend como x09
    Zeilenvorschub (NL), gleichbedeutend como x0a
    Wagenrücklauf (CR), gleichbedeutend como x0d
    f       Seitenvorschub (FF), gleichbedeutend como x0c
    a       Alarm (bell) (BEL), gleichbedeutend como x07
    e       Escape (ESC), gleichbedeutend como x1b
    \       Backslash incluso (behandelt el Umformer)
    q       XProfan: Doppelte Anführungszeichen (behandelt el Umformer)
    vordefinierte Klassen:
    w       una alphanumerisches Signo inklusive "_"
    W       kein alphanumerisches Signo, auch kein "_"
    d       una numerisches Signo
    D       kein numerisches Signo
    s       irgendein wörtertrennendes Signo (entspricht [
    f])
    S       kein wörtertrennendes Signo
    Wortgrenzen:
           findet una Wortgrenze (wo w a W grenzt)
    B       findet alles salvo uno Wortgrenze
    Modifikatoren:
    (?i)     Führe el Búsqueda Schreibweisen-unabhägig por
    (?m)     Behandle el Zielstring como mehrzeiligen String. Das bedeutet, ändere
    el Bedeutungen de "^" y "$": Statt sólo el Anfang oder el Ende des
    Zielstrings a encontrar, se cada Zeilenseparator innerhalb uno Cuerdas
    erkannt (beachte auch el Zeilenseparatoren)
    (?s)     Behandle el Zielstring como einzelne Línea. Das bedeutet, dass "." cada
    beliebige Signo findet, incluso Zeilenseparatoren, el lo normalerweise no findet.
    (?g)     Modifikator para el "Genügsam"-Modus. Durch el Ausstellen voluntad todos folgenden
    Operatoren en el "Genügsam"-Modus geschaltet. Standardmassig son todos Operatoren
    "gierig". Wenn also el Modifikator (?-g) de es, entonces arbeitet + como +?, * como *? etcétera
    Kommentar:
    (?#texto) "text" es Kommentar (darf no schliessende Klammer beinhalten).
    Parámetros en$
    Declarar out$, i%
    out$ = Translate$(en$,"\",Chr$(250))  räume todos Doppel-Backslashes de el Weg
    out$ = Translate$(out$,"q",Chr$(34))  Sonderfall doppelte Anführungszeichen
    out$ = Translate$(out$,"","~")  ändere el Escapezeichen
    out$ = Translate$(out$,Chr$(250),"")  lugar el deseado Backslash otra vez 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]")
    Volver out$

ENDPROC

Proc ZeigMal

    Parámetros Texto$
    Declarar f$, hF&, B#
    f$ = $TempDir + "TEMP_RegEx_Tester.txt"
    Dim B#,Len(Texto$)+1
    String B#,0 = Texto$
    BlockWrite f$,B#,0,Len(Texto$)    Erstelle temp. Expediente...
    Disponer B#
    ShellExec(f$,"open",1)           zeige ellos a...

    Repeat

        hF& = FindWindow( "TEMP_RegEx_Tester" )   warte a el Ventana como es...

    Until hF& <> 0

    Borrar f$   y entferne el Expediente otra vez. Mit el Editor kann el Ergebnis trotzdem gesichert se.

ENDPROC

Proc RegEx_Tester

    Parámetros RegEx$, Texto$
    Declarar Erg$, s$, RestText$, Offset&, oldDeci%, Index%
    oldDeci% = Conjunto("Decimals",0)
    Offset& = 1
    RestText$ = Texto$

    If Len(Texto$) < 80

        Erg$ = "Suchtext: " + Qu$ + Texto$ + Qu$ + CR$
        Erg$ = Erg$ + Espacio$(11) +
        If(Len(Texto$) >= 10,
        MkStr$("1234567890",Len(Texto$)  10) + Left$("1234567890",Len(Texto$) mod 10),
        Left$("1234567890",Len(Texto$) mod 10)) + CR$ + CR$

    Más

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

    EndIf

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

    Mientras 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$(Texto$,Offset&,Len(Texto$))
        s$ = Match$(RegEx$,RestText$)

    EndWhile

    Caso negativo Index%

        Erg$ = Erg$ + "*** no Treffer ***" + CR$ + CR$
        Erg$ = Erg$ + "Wurden tal vez el Escapezeichen no angepaßt? Hier una Gegenüberstellung." + CR$
        Erg$ = Erg$ + "alt: " + Qu$ + RegEx$ + Qu$ + CR$
        Erg$ = Erg$ + "neu: " + Qu$ + RegEx_Umformer( RegEx$ ) + Qu$ + CR$

    EndIf

    Conjunto("Decimals",oldDeci%)
    Volver Erg$

ENDPROC

==========  Hauptprogramm  ==========
ZeigMal RegEx_Tester( "(?i)[e]+","Proc RegEx_Tester" )
ZeigMal RegEx_Tester( "(w+)?","Proc RegEx_Tester" )  para 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$ )
Conjunto("Escape",1)
End

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



Zum Quelltext


Título del Tema, max. 100 Signo.
 

Systemprofile:

Kein Systemprofil creado. [anlegen]

XProfan:

 Contribución  Font  Smilies  ▼ 

Bitte registro en una Contribución a verfassen.
 

Tema opciones

4.929 Views

Untitledvor 0 min.
H.Brill17.11.2023
RudiB.26.04.2022
Jörg Sellmeyer15.05.2018
Alibre01.05.2018
Más...

Themeninformationen

Dieses Thema ha 1 subscriber:

Michael Wodrich (1x)


Admins  |  AGB  |  Applications  |  Autores  |  Chat  |  Política de Privacidad  |  Descargar  |  Entrance  |  Ayuda  |  Merchantportal  |  Pie de imprenta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Juegos  |  Búsqueda  |  Support

Ein Projekt aller XProfan, el lo son!


Mi XProfan
Privado Noticias
Eigenes Ablageforum
Temas-Merkliste
Eigene Beiträge
Eigene Temas
Zwischenablage
Cancelar
 Deutsch English Français Español Italia
Traducciones

Política de Privacidad


Wir uso Cookies sólo como Session-Cookies wegen el technischen Notwendigkeit y en uns hay no Cookies de Drittanbietern.

Wenn du hier en unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung de Informationen en unseren Cookies en XProfan.Net a.

Weitere Informationen a unseren Cookies y dazu, como du el Kontrolle darüber behältst, findest du en unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Yo möchte no Cookie