Ekspresi reguler untuk menemukan URL dalam string

95

Adakah yang tahu tentang ekspresi reguler yang dapat saya gunakan untuk menemukan URL dalam string? Saya telah menemukan banyak ekspresi reguler di Google untuk menentukan apakah seluruh string adalah URL tetapi saya harus dapat mencari seluruh string untuk URL. Misalnya, saya ingin dapat menemukan www.google.comdan http://yahoo.comdalam string berikut:

Hello www.google.com World http://yahoo.com

Saya tidak mencari URL spesifik dalam string. Saya mencari SEMUA URL dalam string itulah sebabnya saya membutuhkan ekspresi reguler.

pengguna758263
sumber
Jika Anda memiliki ekspresi untuk seluruh string, cukup ambil ^ dan $ out untuk membuatnya cocok dengan bagian dari string.
entonio

Jawaban:

206

Ini yang saya gunakan

(http|ftp|https)://([\w_-]+(?:(?:\.[\w_-]+)+))([\w.,@?^=%&:/~+#-]*[\w@?^=%&/~+#-])?

Bekerja untuk saya, harus bekerja untuk Anda juga.

Rajeev
sumber
7
Jangan lupa untuk menghindari garis miring ke depan.
Tandai
1
Ini 2017, dan nama domain unicode ada di mana-mana. \wmungkin tidak cocok simbol internasional (tergantung pada mesin regex), kisaran diperlukan sebagai gantinya: a-zA-Z0-9\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF.
Michael Antipin
3
Ini bagus untuk tujuan umum, tetapi ada banyak kasus yang tidak tertangkap. Ini memaksa bahwa tautan Anda diawali dengan protokol. Jika memilih untuk mengabaikan protokol, akhiran email diterima seperti halnya [email protected].
Squazz
4
seharusnya tidak [\w_-]menjadi [\w-]? karena sudah \wcocok _. per dokumen mozilla
transang
2
Suara positif tetapi Jawaban ini tidak berfungsi sesuai dengan pertanyaan yang diajukan www.yahoo.com. """(http|ftp|https)://([\w_-]+(?:(?:\.[\w_-]+)+))([\w.,@?^=%&:/~+#-]*[\w@?^=%&/~+#-])?""".r.findAllIn("www.google.com").toList. JUGA KURANG PENJELASAN untuk jawaban
prayagupd
46

Sepertinya tidak ada regex yang sempurna untuk penggunaan ini. Saya menemukan yang cukup solid di sini

/(?:(?:https?|ftp|file):\/\/|www\.|ftp\.)(?:\([-A-Z0-9+&@#\/%=~_|$?!:,.]*\)|[-A-Z0-9+&@#\/%=~_|$?!:,.])*(?:\([-A-Z0-9+&@#\/%=~_|$?!:,.]*\)|[A-Z0-9+&@#\/%=~_|$])/igm

Beberapa perbedaan / keunggulan dibandingkan dengan yang lain diposting disini:

  • Itu tidak cocok dengan alamat email
  • Itu cocok dengan localhost: 12345
  • Itu tidak akan mendeteksi sesuatu seperti moo.comtanpa httpatauwww

Lihat di sini untuk contoh

Stefan Henze
sumber
4
itu cocok dengan www.e Ini bukan url yang valid
Ihor Herasymchuk
The gPilihan ini tidak berlaku di semua implementasi ekspresi reguler (misalnya Ruby built-in implementasi).
Huliax
24
text = """The link of this question: /programming/6038061/regular-expression-to-find-urls-within-a-string
Also there are some urls: www.google.com, facebook.com, http://test.com/method?param=wasd
The code below catches all urls in text and returns urls in list."""

urls = re.findall('(?:(?:https?|ftp):\/\/)?[\w/\-?=%.]+\.[\w/\-?=%.]+', text)
print(urls)

Keluaran:

[
    '/programming/6038061/regular-expression-to-find-urls-within-a-string', 
    'www.google.com', 
    'facebook.com',
    'http://test.com/method?param=wasd'
]
GooDeeJaY
sumber
Kotlin val urlRegex = "(? :( ?: https? | Ftp): \\ / \\ /)? [\\ w / \\ -? =%.] + \\. [\\ w / \\ - ? =%.] + "
Akshay Nandwana
Merindukan &parameter di url. misal http://test.com/method?param=wasd&param2=wasd2melewatkan param2
TrophyGeek
10

Tak satu pun dari solusi yang disediakan di sini memecahkan masalah / kasus penggunaan yang saya miliki.

Apa yang saya berikan di sini, adalah yang terbaik yang saya temukan / buat sejauh ini. Saya akan memperbaruinya ketika saya menemukan kasus tepi baru yang tidak ditangani.

\b
  #Word cannot begin with special characters
  (?<![@.,%&#-])
  #Protocols are optional, but take them with us if they are present
  (?<protocol>\w{2,10}:\/\/)?
  #Domains have to be of a length of 1 chars or greater
  ((?:\w|\&\#\d{1,5};)[.-]?)+
  #The domain ending has to be between 2 to 15 characters
  (\.([a-z]{2,15})
       #If no domain ending we want a port, only if a protocol is specified
       |(?(protocol)(?:\:\d{1,6})|(?!)))
\b
#Word cannot end with @ (made to catch emails)
(?![@])
#We accept any number of slugs, given we have a char after the slash
(\/)?
#If we have endings like ?=fds include the ending
(?:([\w\d\?\-=#:%@&.;])+(?:\/(?:([\w\d\?\-=#:%@&;.])+))*)?
#The last char cannot be one of these symbols .,?!,- exclude these
(?<![.,?!-])
Squazz
sumber
1
Apakah ada cara untuk membuat javascript ini ramah? Karena grup penangkap bernama tidak berfungsi penuh di sana, jadi pemeriksaan nilai protokol tidak memvalidasi.
einord
6

Saya pikir pola regex ini menangani persis apa yang Anda inginkan

/(http|https|ftp|ftps)\:\/\/[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(\/\S*)?/

dan ini adalah contoh cuplikan untuk mengekstrak Url:

// The Regular Expression filter
$reg_exUrl = "/(http|https|ftp|ftps)\:\/\/[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(\/\S*)?/";

// The Text you want to filter for urls
$text = "The text you want  /programming/6038061/regular-expression-to-find-urls-within-a-string to filter goes here.";

// Check if there is a url in the text
preg_match_all($reg_exUrl, $text, $url,$matches);
var_dump($matches);
Yuseferi
sumber
5

Semua jawaban di atas tidak cocok untuk karakter Unicode di URL, misalnya: http://google.com?query=đức+filan+đã+search

Untuk solusinya, yang ini harus berhasil:

(ftp:\/\/|www\.|https?:\/\/){1}[a-zA-Z0-9u00a1-\uffff0-]{2,}\.[a-zA-Z0-9u00a1-\uffff0-]{2,}(\S*)
Duc Filan
sumber
2
Karakter unicode dilarang sesuai RFC 1738 di URL ( faqs.org/rfcs/rfc1738.html ). Mereka harus persen dikodekan agar sesuai dengan standar - meskipun saya pikir mungkin telah berubah baru-baru ini - layak dibaca w3.org/International/articles/idn-and-iri
mrswadge
@mradge Saya hanya membahas kasus. Kami tidak yakin apakah semua orang peduli dengan standar. Terima kasih atas informasi anda.
Duc Filan
Hanya yang ini yang bekerja dengan sempurna bagi saya yang memiliki url seperti " example.com " "www.exmaple.com" " example.com " " example.co.in " " exmaple.com/?q='me '"
Krissh
5

Jika Anda harus ketat dalam memilih tautan, saya akan memilih:

(?i)\b((?:[a-z][\w-]+:(?:/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>?«»“”‘’]))

Untuk info lebih lanjut, baca ini:

Pola Regex Akurat dan Liberal yang Ditingkatkan untuk Mencocokkan URL

Tommaso Belluzzo
sumber
2
Jangan lakukan itu. regular-expressions.info/catastrophic.html Ini akan mematikan aplikasi Anda ...
Auric
4

Saya menemukan ini yang mencakup sebagian besar tautan sampel, termasuk bagian subdirektori.

Regex adalah:

(?:(?:https?|ftp):\/\/|\b(?:[a-z\d]+\.))(?:(?:[^\s()<>]+|\((?:[^\s()<>]+|(?:\([^\s()<>]+\)))?\))+(?:\((?:[^\s()<>]+|(?:\(?:[^\s()<>]+\)))?\)|[^\s`!()\[\]{};:'".,<>?«»“”‘’]))?
Thilanka Bowala
sumber
3

Jika Anda memiliki pola url, Anda harus dapat mencarinya di string Anda. Pastikan saja bahwa pola tidak memiliki ^dan $menandai awal dan akhir string url. Jadi jika P adalah pola untuk URL, cari kecocokan untuk P.

manojlds
sumber
Ini adalah regex yang saya temukan yang memverifikasi jika seluruh string adalah URL. Saya mengambil ^ di awal dan $ di akhir seperti yang Anda katakan dan masih tidak berhasil. Apa yang saya lakukan salah? ^(http|https|ftp)\://[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(:[a-zA-Z0-9]*)?/?([a-zA-Z0-9\-\._\?\,\'/\\\+&amp;%\$#\=~])*[^\.\,\)\(\s]$
pengguna758263
Mungkin membantu jika Anda menunjukkan bahasa yang Anda gunakan. Bagaimanapun, pastikan untuk memeriksa http://regexpal.com/; di sana Anda dapat menguji ekspresi yang berbeda terhadap string Anda sampai Anda melakukannya dengan benar.
entonio
@ user758263 - apakah Anda benar-benar membutuhkan regex yang kompleks untuk url? Tergantung pada kemungkinan url yang mungkin Anda temukan. Lihat juga gskinner.com/RegExr untuk mencoba regex. Mereka juga memiliki ratusan sampel di kanan bawah Communitytab termasuk yang untuk url
manojlds
Saya mencoba mencari semua kemungkinan URL dan saya menggunakan C ++. Terima kasih untuk link entonio dan manojlds. Situs gskinner sangat membantu karena memiliki sampel.
pengguna758263
3

Saya menggunakan ekspresi reguler di bawah ini untuk menemukan url dalam sebuah string:

/(http|https)\:\/\/[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(\/\S*)?/
aditya
sumber
2
[a-zA-Z]{2,3}sangat buruk untuk mencocokkan TLD, lihat daftar resmi: data.iana.org/TLD/tlds-alpha-by-domain.txt
Toto
3

Di sini regexp yang sedikit lebih dioptimalkan:

(?:(?:(https?|ftp|file):\/\/|www\.|ftp\.)|([\w\-_]+(?:\.|\s*\[dot\]\s*[A-Z\-_]+)+))([A-Z\-\.,@?^=%&amp;:\/~\+#]*[A-Z\-\@?^=%&amp;\/~\+#]){2,6}?

Berikut ini pengujian dengan data: https://regex101.com/r/sFzzpY/6

masukkan deskripsi gambar di sini

Mindaugas Jaraminas
sumber
2

Pendek dan sederhana. Saya belum menguji dalam kode javascript tetapi tampaknya itu akan berhasil:

((http|ftp|https):\/\/)?(([\w.-]*)\.([\w]*))

Kode di regex101.com

Pratinjau kode

bafsar
sumber
1
Saya menyukai regex Anda karena persis seperti yang saya cari: Saya perlu mengidentifikasi dan menghapus URL dari beberapa teks, bukan memvalidasi. Bekerja di rel.
Dagmar
@Dagmar Saya senang mendengarnya :)
bafsar
1

Ini adalah sedikit perbaikan / penyesuaian untuk (tergantung pada apa yang Anda butuhkan) jawaban Rajeev:

([\w\-_]+(?:(?:\.|\s*\[dot\]\s*[A-Z\-_]+)+))([A-Z\-\.,@?^=%&amp;:/~\+#]*[A-Z\-\@?^=%&amp;/~\+#]){2,6}?

Lihat di sini untuk contoh apa yang cocok dan tidak cocok.

Saya menyingkirkan cek untuk "http" dll karena saya ingin menangkap url tanpa ini. Saya menambahkan sedikit ke regex untuk menangkap beberapa url yang dikaburkan (yaitu di mana pengguna menggunakan [titik] alih-alih "."). Akhirnya saya mengganti "\ w" dengan "AZ" menjadi dan "{2,3}" untuk mengurangi positif palsu seperti v2.0 dan "moo.0dd".

Setiap perbaikan menyambut ini.

avjaarsveld
sumber
[a-zA-Z]{2,3}sangat buruk untuk mencocokkan TLD, lihat daftar resmi: data.iana.org/TLD/tlds-alpha-by-domain.txt . Juga ekspresi reguler Anda _.........&&&&&&tidak yakin itu adalah url yang valid.
Toto
Terima kasih untuk JE SUIS CHAELIE itu, ada saran untuk perbaikan (terutama yang positif palsu)?
avjaarsveld
1

Metode yang mungkin terlalu sederhana, tetapi cara kerjanya mungkin:

[localhost|http|https|ftp|file]+://[\w\S(\.|:|/)]+

Saya mengujinya di Python dan selama parsing string berisi spasi sebelum dan sesudah dan tidak ada di url (yang belum pernah saya lihat sebelumnya) itu akan baik-baik saja.

Ini adalah ide online yang mendemonstrasikannya

Namun, berikut beberapa manfaat menggunakannya:

  • Ia mengenali file:dan localhostjuga alamat ip
  • Tidak akan pernah cocok tanpa mereka
  • Tidak keberatan dengan karakter yang tidak biasa seperti #atau -(lihat url posting ini)
Simon
sumber
1

Penggunaan regex yang disediakan oleh @JustinLevene tidak memiliki urutan escape yang tepat di garis miring ke belakang. Diperbarui untuk sekarang menjadi benar, dan ditambahkan dalam kondisi untuk mencocokkan protokol FTP juga: Akan cocok dengan semua url dengan atau tanpa protokol, dan tanpa "www."

Kode: ^((http|ftp|https):\/\/)?([\w_-]+(?:(?:\.[\w_-]+)+))([\w.,@?^=%&:\/~+#-]*[\w@?^=%&\/~+#-])?

Contoh: https://regex101.com/r/uQ9aL4/65

Justin E. Samuels
sumber
1

Menulis satu sendiri:

let regex = /([\w+]+\:\/\/)?([\w\d-]+\.)*[\w-]+[\.\:]\w+([\/\?\=\&\#]?[\w-]+)*\/?/gm

Ini berfungsi di SEMUA domain berikut:

https://www.facebook.com
https://app-1.number123.com
http://facebook.com
ftp://facebook.com
http://localhost:3000
localhost:3000/
unitedkingdomurl.co.uk
this.is.a.url.com/its/still=going?wow
shop.facebook.org
app.number123.com
app1.number123.com
app-1.numbEr123.com
app.dashes-dash.com
www.facebook.com
facebook.com
fb.com/hello_123
fb.com/hel-lo
fb.com/hello/goodbye
fb.com/hello/goodbye?okay
fb.com/hello/goodbye?okay=alright
Hello www.google.com World http://yahoo.com
https://www.google.com.tr/admin/subPage?qs1=sss1&qs2=sss2&qs3=sss3#Services
https://google.com.tr/test/subPage?qs1=sss1&qs2=sss2&qs3=sss3#Services
http://google.com/test/subPage?qs1=sss1&qs2=sss2&qs3=sss3#Services
ftp://google.com/test/subPage?qs1=sss1&qs2=sss2&qs3=sss3#Services
www.google.com.tr/test/subPage?qs1=sss1&qs2=sss2&qs3=sss3#Services
www.google.com/test/subPage?qs1=sss1&qs2=sss2&qs3=sss3#Services
drive.google.com/test/subPage?qs1=sss1&qs2=sss2&qs3=sss3#Services
https://www.example.pl
http://www.example.com
www.example.pl
example.com
http://blog.example.com
http://www.example.com/product
http://www.example.com/products?id=1&page=2
http://www.example.com#up
http://255.255.255.255
255.255.255.255

Anda dapat melihat performanya di sini di regex101 dan menyesuaikan sesuai kebutuhan

wongz
sumber
0

Saya menggunakan logika menemukan teks di antara dua titik atau titik

regex di bawah berfungsi dengan baik dengan python

(?<=\.)[^}]*(?=\.)
faisal00813
sumber
0

Mencocokkan URL dalam teks seharusnya tidak terlalu rumit

(?:(?:(?:ftp|http)[s]*:\/\/|www\.)[^\.]+\.[^ \n]+)

https://regex101.com/r/wewpP1/2

erraT naT
sumber
0

Saya menggunakan ini

^(https?:\\/\\/([a-zA-z0-9]+)(\\.[a-zA-z0-9]+)(\\.[a-zA-z0-9\\/\\=\\-\\_\\?]+)?)$
Maikon Ayres Da Silva
sumber
0
(?:vnc|s3|ssh|scp|sftp|ftp|http|https)\:\/\/[\w\.]+(?:\:?\d{0,5})|(?:mailto|)\:[\w\.]+\@[\w\.]+

Jika Anda menginginkan penjelasan setiap bagian, coba di regexr [.] Com di mana Anda akan mendapatkan penjelasan yang bagus dari setiap karakter.

Ini dibagi dengan "|" atau "ATAU" karena tidak semua URI yang dapat digunakan memiliki "//" jadi di sinilah Anda dapat membuat daftar skema sebagai atau ketentuan yang ingin Anda cocokkan.

skrap3e
sumber
0

Saya telah memanfaatkan kelas c # Uri dan berfungsi, baik dengan Alamat IP, localhost

 public static bool CheckURLIsValid(string url)
    {
        Uri returnURL;

       return (Uri.TryCreate(url, UriKind.Absolute, out returnURL)
           && (returnURL.Scheme == Uri.UriSchemeHttp || returnURL.Scheme == Uri.UriSchemeHttps));


    }
MayankGaur
sumber
0

Saya menyukai solusi Stefan Henze tetapi hasilnya 34,56. Ini terlalu umum dan saya memiliki html yang belum diurai. Ada 4 jangkar untuk url;

www,

http: \ (dan co),

. diikuti dengan huruf dan kemudian /,

atau huruf. dan salah satunya: https://ftp.isc.org/www/survey/reports/current/bynum.txt .

Saya menggunakan banyak info dari utas ini. Terima kasih semua.

"(((((http|ftp|https|gopher|telnet|file|localhost):\\/\\/)|(www\\.)|(xn--)){1}([\\w_-]+(?:(?:\\.[\\w_-]+)+))([\\w.,@?^=%&:\\/~+#-]*[\\w@?^=%&\\/~+#-])?)|(([\\w_-]{2,200}(?:(?:\\.[\\w_-]+)*))((\\.[\\w_-]+\\/([\\w.,@?^=%&:\\/~+#-]*[\\w@?^=%&\\/~+#-])?)|(\\.((org|com|net|edu|gov|mil|int|arpa|biz|info|unknown|one|ninja|network|host|coop|tech)|(jp|br|it|cn|mx|ar|nl|pl|ru|tr|tw|za|be|uk|eg|es|fi|pt|th|nz|cz|hu|gr|dk|il|sg|uy|lt|ua|ie|ir|ve|kz|ec|rs|sk|py|bg|hk|eu|ee|md|is|my|lv|gt|pk|ni|by|ae|kr|su|vn|cy|am|ke))))))(?!(((ttp|tp|ttps):\\/\\/)|(ww\\.)|(n--)))"

Di atas memecahkan hampir semua hal kecuali string seperti "eurls: www.google.com, facebook.com, http: //test.com/", yang dikembalikan sebagai string tunggal. Tbh idk kenapa saya menambahkan gopher dll. Kode Proof R

if(T){
  wierdurl<-vector()
  wierdurl[1]<-"https://JP納豆.例.jp/dir1/納豆 "
  wierdurl[2]<-"xn--jp-cd2fp15c.xn--fsq.jp "
  wierdurl[3]<-"http://52.221.161.242/2018/11/23/biofourmis-collab"
  wierdurl[4]<-"https://12000.org/ "
  wierdurl[5]<-"  https://vg-1.com/?page_id=1002 "
  wierdurl[6]<-"https://3dnews.ru/822878"
  wierdurl[7]<-"The link of this question: /programming/6038061/regular-expression-to-find-urls-within-a-string
  Also there are some urls: www.google.com, facebook.com, http://test.com/method?param=wasd
  The code below catches all urls in text and returns urls in list. "
  wierdurl[8]<-"Thelinkofthisquestion:/programming/6038061/regular-expression-to-find-urls-within-a-string
  Alsotherearesomeurls:www.google.com,facebook.com,http://test.com/method?param=wasd
  Thecodebelowcatchesallurlsintextandreturnsurlsinlist. "
  wierdurl[9]<-"Thelinkofthisquestion:/programming/6038061/regular-expression-to-find-urls-within-a-stringAlsotherearesomeurlsZwww.google.com,facebook.com,http://test.com/method?param=wasdThecodebelowcatchesallurlsintextandreturnsurlsinlist."
  wierdurl[10]<-"1facebook.com/1res"
  wierdurl[11]<-"1facebook.com/1res/wat.txt"
  wierdurl[12]<-"www.e "
  wierdurl[13]<-"is this the file.txt i need"
  wierdurl[14]<-"xn--jp-cd2fp15c.xn--fsq.jpinspiredby "
  wierdurl[15]<-"[xn--jp-cd2fp15c.xn--fsq.jp/inspiredby "
  wierdurl[16]<-"xnto--jpto-cd2fp15c.xnto--fsq.jpinspiredby "
  wierdurl[17]<-"fsety--fwdvg-gertu56.ffuoiw--ffwsx.3dinspiredby "
  wierdurl[18]<-"://3dnews.ru/822878 "
  wierdurl[19]<-" http://mywebsite.com/msn.co.uk "
  wierdurl[20]<-" 2.0http://www.abe.hip "
  wierdurl[21]<-"www.abe.hip"
  wierdurl[22]<-"hardware/software/data"
  regexstring<-vector()
  regexstring[2]<-"(http|ftp|https)://([\\w_-]+(?:(?:\\.[\\w_-]+)+))([\\w.,@?^=%&:/~+#-]*[\\w@?^=%&/~+#-])?"
  regexstring[3]<-"/(?:(?:https?|ftp|file):\\/\\/|www\\.|ftp\\.)(?:\\([-A-Z0-9+&@#\\/%=~_|$?!:,.]*\\)|[-A-Z0-9+&@#\\/%=~_|$?!:,.])*(?:\\([-A-Z0-9+&@#\\/%=~_|$?!:,.]*\\)|[A-Z0-9+&@#\\/%=~_|$])/igm"
  regexstring[4]<-"[a-zA-Z0-9\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]?"
  regexstring[5]<-"((http|ftp|https)\\:\\/\\/)?([\\w_-]+(?:(?:\\.[\\w_-]+)+))([\\w.,@?^=%&:/~+#-]*[\\w@?^=%&/~+#-])?"
  regexstring[6]<-"((http|ftp|https):\\/\\/)?([\\w_-]+(?:(?:\\.[\\w_-]+)+))([\\w.,@?^=%&:\\/~+#-]*[\\w@?^=%&\\/~+#-])?"
  regexstring[7]<-"(http|ftp|https)(:\\/\\/)([\\w_-]+(?:(?:\\.[\\w_-]+)+))([\\w.,@?^=%&:/~+#-]*[\\w@?^=%&/~+#-])?"
  regexstring[8]<-"(?:(?:https?|ftp|file):\\/\\/|www\\.|ftp\\.)(?:\\([-A-Z0-9+&@#/%=~_|$?!:,.]*\\)|[-A-Z0-9+&@#/%=~_|$?!:,.])*(?:\\([-A-Z0-9+&@#/%=~_|$?!:,.]*\\)|[A-Z0-9+&@#/%=~_|$])"
  regexstring[10]<-"((http[s]?|ftp):\\/)?\\/?([^:\\/\\s]+)((\\/\\w+)*\\/)([\\w\\-\\.]+[^#?\\s]+)(.*)?(#[\\w\\-]+)?"
  regexstring[12]<-"http[s:/]+[[:alnum:]./]+"
  regexstring[9]<-"http[s:/]+[[:alnum:]./]+" #in DLpages 230
  regexstring[1]<-"[[:alnum:]-]+?[.][:alnum:]+?(?=[/ :])" #in link_graphs 50
  regexstring[13]<-"^(?!mailto:)(?:(?:http|https|ftp)://)(?:\\S+(?::\\S*)?@)?(?:(?:(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[0-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z\\u00a1-\\uffff0-9]+-?)*[a-z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-z\\u00a1-\\uffff0-9]+-?)*[a-z\\u00a1-\\uffff0-9]+)*(?:\\.(?:[a-z\\u00a1-\\uffff]{2,})))|localhost)(?::\\d{2,5})?(?:(/|\\?|#)[^\\s]*)?$"
  regexstring[14]<-"(((((http|ftp|https):\\/\\/)|(www\\.)|(xn--)){1}([\\w_-]+(?:(?:\\.[\\w_-]+)+))([\\w.,@?^=%&:\\/~+#-]*[\\w@?^=%&\\/~+#-])?)|(([\\w_-]+(?:(?:\\.[\\w_-]+)*))((\\.((org|com|net|edu|gov|mil|int)|(([:alpha:]{2})(?=[, ]))))|([\\/]([\\w.,@?^=%&:\\/~+#-]*[\\w@?^=%&\\/~+#-])?))))(?!(((ttp|tp|ttps):\\/\\/)|(ww\\.)|(n--)))"
  regexstring[15]<-"(((((http|ftp|https|gopher|telnet|file|localhost):\\/\\/)|(www\\.)|(xn--)){1}([\\w_-]+(?:(?:\\.[\\w_-]+)+))([\\w.,@?^=%&:\\/~+#-]*[\\w@?^=%&\\/~+#-])?)|(([\\w_-]{2,200}(?:(?:\\.[\\w_-]+)*))((\\.[\\w_-]+\\/([\\w.,@?^=%&:\\/~+#-]*[\\w@?^=%&\\/~+#-])?)|(\\.((org|com|net|edu|gov|mil|int|arpa|biz|info|unknown|one|ninja|network|host|coop|tech)|(jp|br|it|cn|mx|ar|nl|pl|ru|tr|tw|za|be|uk|eg|es|fi|pt|th|nz|cz|hu|gr|dk|il|sg|uy|lt|ua|ie|ir|ve|kz|ec|rs|sk|py|bg|hk|eu|ee|md|is|my|lv|gt|pk|ni|by|ae|kr|su|vn|cy|am|ke))))))(?!(((ttp|tp|ttps):\\/\\/)|(ww\\.)|(n--)))"
    }

for(i in wierdurl){#c(7,22)
  for(c in regexstring[c(15)]) {
    print(paste(i,which(regexstring==c)))
    print(str_extract_all(i,c))
  }
}
ran8
sumber
-1

Ini yang terbaik.

NSString *urlRegex="(http|ftp|https|www|gopher|telnet|file)(://|.)([\\w_-]+(?:(?:\\.[\\w_-]+)‌​+))([\\w.,@?^=%&:/~+#-]*[\\w@?^=%&/~+#-])?";
Dhinakar
sumber
-1

Ini yang paling sederhana. yang cocok untukku.

%(http|ftp|https|www)(://|\.)[A-Za-z0-9-_\.]*(\.)[a-z]*%
Md. Miraj Khan
sumber
-1

Sederhana saja.

Gunakan pola ini: \b((ftp|https?)://)?([\w-\.]+\.(com|net|org|gov|mil|int|edu|info|me)|(\d+\.\d+\.\d+\.\d+))(:\d+)?(\/[\w-\/]*(\?\w*(=\w+)*[&\w-=]*)*(#[\w-]+)*)?

Itu cocok dengan tautan apa pun yang berisi:

Protokol yang Diizinkan: http, https dan ftp

Domain yang Diizinkan: * .com, * .net, * .org, * .gov, * .mil, * .int, * .edu, * .info dan * .me OR IP

Port yang Diizinkan: true

Parameter yang Diizinkan: benar

Hash yang Diizinkan: true

Mahmoud Khudairi
sumber