Hi,
ich hab eine Idee was haltet ihr von der Idee das wir immer wenn uns mal ein guter Regülarer Ausdruck in die Finger kommt das wir ihn hier sammeln?
Ok ich fang dan mal an
HTML-Hexcode
MAC-Adresse
HTTP-Url
Spoiler anzeigen
IP-Adresse
Hi,
ich hab eine Idee was haltet ihr von der Idee das wir immer wenn uns mal ein guter Regülarer Ausdruck in die Finger kommt das wir ihn hier sammeln?
Ok ich fang dan mal an
HTML-Hexcode
MAC-Adresse
HTTP-Url
IP-Adresse
finde ich eine Super Idee, denn ich beschäftige mich auch gerade damit. Aber ich kapier das einfach nicht
URL (http, https, ftp):
IPV6:
IPV6 HexCompressed:
IPV6 6Hex4Dec:
IPV6 Hex4DecCompressed:
Deutsche PLZ:
eMail (einfach):
eMail RFC 3696:
String in Anführungszeichen:
(Werbung: ist alles in der XInsert Bibliothek "RegEx" in jEdit4AutoIt auch drin
wie wäre es mit jeweils ein AnwenderBeispiel ?
Gute Idee
Ich werd mich bald mal dran setzten
Dieser Thread ist völlig zu Unrecht in der Versenkung verschwunden. Ich werde ihn mal wieder nach oben befördern.
Also wenn ihr mal wieder ein allgemeingültiges Pattern mühsam zusammengepfriemelt habt, her damit, damit die Sammlung wächst.
Spalten aus CSV-Datei auslesen
;aus einer CSV-Datei die jeweilige Spalte in ein Array ausgeben
#include <Array.au3>
$txt = "Stadt,Land,Fluss,Farbe,Vorname,Nachname,Tier" & @CRLF ;alternativ fileread("file.csv")
$txt &= "London,England,Themse,Blau,Heinz,Becker,Hund" & @CRLF
$txt &= "Mainz,Deutschland,Rhein,Gelb,Tim,Thaler,Katze" & @CRLF
$txt &= "Paris,Frankreich,Seine,Rot,Hilde,Meier,Maus"
ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $txt = ' & $txt & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console
$s = "," ;Separator, der in der CSV verwendt wird
$column = "D" ;Spalte, entweder als Buchstabe A-Z
$col = Asc(StringUpper($column)) - 64 ;Spalte, als Spaltennummer einsbasierend
$pattern = '(?m)^(?:[^' & $s & ']*' & $s & '){' & $col - 1 & '}([^' & $s & ']*)' ;RegEx-Pattern
$res = StringRegExp($txt, $pattern, 3) ;RegEx
_ArrayDisplay($res, "Spalte " & $column)
$col = 1 ;Spaltennummer einsbasierend
$pattern = '(?m)^(?:[^' & $s & ']*' & $s & '){' & $col - 1 & '}([^' & $s & ']*)' ;RegEx-Pattern
$res = StringRegExp($txt, $pattern, 3) ;regEx
_ArrayDisplay($res, "Spalte " & $col)
Alles anzeigen
Primzahlen per RegEx
Korrigierte Fassung der IP-Adresse (die oben erkennt auch falsche IP-Adressen...):
Der String oben erkennt auch "100.0.123.023" als gültige Adresse. Dies ist allerdings keine gültige IP-Adresse. Außerdem hat man die Lösung per Google eh nicht gefunden, wollte sie gerade beitragen
Und für die, die die einzelnen Blocks wollen:
Oder beides:
@Einexage
Dein Pattern hat noch nen kleinen Fehler drin und zwar an der Stelle [|1-9].
Führt dazu dass z.B. auch 123.|1.3.2 gematcht wird.
Etwas zusammengefasst könnte man es auch z.B. auch so schreiben:
@Einexage
Dein Pattern hat noch nen kleinen Fehler drin und zwar an der Stelle [|1-9].
Führt dazu dass z.B. auch 123.|1.3.2 gematcht wird.Etwas zusammengefasst könnte man es auch z.B. auch so schreiben:
Danke, Aspirin, der Fehler war mir gar nicht aufgefallen, da ich es nur eben schnell nebenher gebastelt habe...
Leider ist der Pattern aber ziemlich nutzlos, da er auch ungültige IP-Adressen zulässt im Gegensatz zu dem oben - außer dem gekürzten oben und dem im Eigangsposting. Das Kürzen bei IP-Adressen führt bloß dazu das der RegEx wertlos wird. Dann kann man auch gleich (\d+\.\d+\.\d+\.\d+) verwenden. Etwa genauso sinnvoll, da es genauso wenig absichert, dass die Eingabe auch wirklich eine gültige IP ist.
0.0.0.0 ist keine gültige IP. Ebenso 255.255.255.255.
Nebenbei: Telefonnummerpatten
Und wie schrieb BugFix? Dieser Thread ist völlig zu Unrecht in der Versenkung verschwunden. Ich werde ihn mal wieder nach oben befördern.
finde ich eine Super Idee, denn ich beschäftige mich auch gerade damit. Aber ich kapier das einfach nicht
Willkommen im Club !
Telefonnummern:
#include <Array.au3>
$pattern = "(?:(?:(?:(?:(?:(?:(?:00|\+)49[ \-\/]?)|0)[1-9][0-9]{1,4})[ \-\/]?)|(?:(?:(?:(?:00|\+)49\()|\(0)[1-9][0-9]{1,4}\)[ \-\/]?))[0-9]{1,7}(?:[ \-\/]?[0-9]{1,5})?)"
$text = "'Deutsche Telefonnummern' Matches German phone and fax numbers (including cell phone numbers) in various formats like: 004989123456, +49 89 123456," & @crlf & " +49(89)123456, 089-1234-5678, 089 1234 5678, (089)1234-5678 Max. number of digits is 21."
$ret = StringRegExp($text, $pattern, 3)
_ArrayDisplay($ret)
Alles anzeigen
JA für regex sollten wir uns wirklich mal was einfallen lassen - die sind einerseits super praktisch - können einen aber auch in den Wahnsinn treiben :). Irgendwie sollten wir unser Wissen hier besser bündeln...
Peter
Wofür sind die '/' am Anfang und am Ende? Zudem funktioniert das bei mir nicht, obwohl ich die '/' weggelassen habe und das fehlende 'z' ergänzt habe.
Wofür die '/' am Anfang und Ende sind, kann ich dir nicht sagen.
Als Alternative kannst du dieses Pattern verwenden:
Global $sRxPattern = "^(https?|ftp):\/\/[^\s/$.?#].[^\s]*$"
Global $sURL = 'https://autoit.de/index.php?thread/7892-regul%C3%A4re-ausdr%C3%BCcke-sammlung/&postID=691034#post691034'
ConsoleWrite(StringRegExp($sURL, $sRxPattern) & @CRLF)
oder du machst es so...
oder du machst es so...
Und wenn du offline bist?
Und wenn du offline bist?
oder so...
;-- TIME_STAMP 2018-08-04 19:55:31 v 0.1
#include <StringConstants.au3>
#include <WinAPIDiag.au3>
Global $sURL = 'https://autoit.de/index.php?thread/7892-regul%C3%A4re-ausdr%C3%BCcke-sammlung/&postID=691034#post691034'
ConsoleWrite(_IsUrl($sURL) & @CRLF)
Func _IsUrl($sURL)
Local Static $sRxPattern = "^(https?|ftp):\/\/[^\s/$.?#].[^\s]*$"
If _WinAPI_IsInternetConnected() Then
InetGetSize($sURL)
Return @error ? False : True
Else
Return StringRegExp($sURL, $sRxPattern)
EndIf
EndFunc
Alles anzeigen