Ich brauche eine Regex allgemeine URLs übereinstimmen
-
08-07-2019 - |
Lösung
Nach RFC2396 :
^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?
Andere Tipps
fügen hinzu, dass RegEx als Wiki Antwort:
[\w+-]+://([a-zA-Z0-9]+\.)+[[a-zA-Z0-9]+](/[%\w]+)(\?[-A-Z0-9+&@#/%=~_|!:,.;]*)?
Option 2 (Re CMS)
^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?
Aber das ist für alles, was gesund so getrimmt lax es restriktiver zu machen und andere Dinge zu unterscheiden, aus.
proto :// name : pass @ server :port /path ? args
^([^:/?#]+)://(([^/?#@:]+(:[^/?#@:]+)?@)?[^/?#@:]+(:[0-9]+)?)(/[^?#]*)(\?([^#]*))?
ich dazu kam aus einer etwas anderen Richtung. Ich wollte Gchats Fähigkeit emulieren something.co.uk
anzupassen und Linkify es. Also ging ich mit einem regulären Ausdruck, der auf beiden Seiten ohne entweder einen folgenden Zeitraum oder einen Raum für eine .
sieht und dann packt alles um ihn herum, bis er Leerzeichen trifft. Sie paßt einen Punkt am Ende eines URI, aber ich nehme später ab. So könnte dies eine Option sein, wenn Sie Fehlalarme über fehlen einige Potenziale bevorzugen
url_re = re.compile(r"""
[^\s] # not whitespace
[a-zA-Z0-9:/\-]+ # the protocol and domain name
\.(?!\.) # A literal '.' not followed by another
[\w\-\./\?=&%~#]+ # country and path components
[^\s] # not whitespace""", re.VERBOSE)
url_re.findall('http://thereisnothing.com/a/path adn some text www.google.com/?=query#%20 https://somewhere.com other-countries.co.nz. ellipsis... is also a great place to buy. But try text-hello.com ftp://something.com')
['http://thereisnothing.com/a/path',
'www.google.com/?=query#%20',
'https://somewhere.com',
'other-countries.co.nz.',
'text-hello.com',
'ftp://something.com']
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow