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.


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.


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 test@testing.com.
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


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'
]

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
(?<![.,?!-])

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);

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*)

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


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`!()\[\]{};:'".,<>?«»“”‘’]))?

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.


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

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


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


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.


[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)

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



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


0

Saya menggunakan logika menemukan teks di antara dua titik atau titik

regex di bawah berfungsi dengan baik dengan python

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



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.


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));


    }

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))
  }
}

-1

Ini yang terbaik.

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

-1

Ini yang paling sederhana. yang cocok untukku.

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

-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

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.