Регулярний вираз для пошуку URL-адрес у рядку


95

Хтось знає регулярний вираз, за ​​допомогою якого я міг би знаходити URL-адреси в рядку? Я знайшов у Google багато регулярних виразів для визначення, чи весь рядок є URL-адресою, але мені потрібно мати можливість шукати URL-адреси у всьому рядку. Наприклад, я хотів би мати можливість знайти www.google.comі http://yahoo.comв такому рядку:

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

Я не шукаю конкретних URL-адрес у рядку. Я шукаю ВСІ URL-адреси у рядку, тому мені потрібен регулярний вираз.


Якщо у вас є вирази для цілого рядка, просто вийміть ^ і $, щоб вони збігалися з частинами рядка.
entonio

Відповіді:


206

Це я використовую

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

Працює для мене, має працювати і для вас.


7
Не забудьте уникнути похилих рисок.
Марк

1
Зараз 2017 рік, і доменні імена Unicode всюди. \wможе не відповідати міжнародним символів (залежить від регулярних виразів), діапазон необхідний замість: a-zA-Z0-9\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF.
Майкл Антіпін,

3
Це добре для загальних цілей, але є багато випадків, коли це не вловлює. Завдяки цьому ваші посилання мають префікс протоколу. Якщо ви вирішите ігнорувати протоколи, приймаються закінчення електронних листів, як це відбувається у випадку test@testing.com.
Squazz

4
не повинно [\w_-]бути [\w-]? тому що \wматчі _вже. per mozilla docs
transang

2
Проголосував, але ця відповідь не працює, що задає питання www.yahoo.com. """(http|ftp|https)://([\w_-]+(?:(?:\.[\w_-]+)+))([\w.,@?^=%&:/~+#-]*[\w@?^=%&/~+#-])?""".r.findAllIn("www.google.com").toList.
ТАКЖЕ БАЛЬШО

45

Вгадайте, жоден регулярний вираз не підходить для цього використання. Я знайшов досить твердий один тут

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

Деякі відмінності / переваги порівняно з іншими, розміщеними тут:

  • Він не відповідає адресам електронної пошти
  • Це дійсно відповідає localhost: 12345
  • Він не виявить щось на зразок moo.comбез httpабоwww

Дивіться тут приклади


4
це відповідає www.e. Це недійсна URL-адреса
Ігор Герасимчук

gОпція не діє у всіх регулярних реалізаціях виразів (наприклад , рубін вбудованого в реалізації).
Huliax

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

Вихід:

[
    '/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 / \\ - ? =%.] + "
Акшай Нандвана

Пропускає &параметри в URL-адресі. наприклад, http://test.com/method?param=wasd&param2=wasd2пропускає param2
TrophyGeek

10

Жодне із запропонованих тут рішень не вирішило проблеми / випадки використання, які я мав.

Те, що я подав тут, - це найкраще, що я знайшов / зробив на сьогодні. Я оновлю його, коли знайду нові крайні кейси, з якими він не справляється.

\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
Чи є спосіб зробити цей javascript дружнім? Як названі групи захоплення там не повністю функціонують, тому перевірка значення протоколу не перевіряється.
einord

6

Я думаю, що цей шаблон регулярних виразів обробляє саме те, що ви хочете

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

і це приклад фрагмента для вилучення 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

Усі наведені вище відповіді не відповідають символам Unicode в URL-адресі, наприклад: http://google.com?query=đức+filan+đã+search

Для вирішення цього питання слід працювати:

(ftp:\/\/|www\.|https?:\/\/){1}[a-zA-Z0-9u00a1-\uffff0-]{2,}\.[a-zA-Z0-9u00a1-\uffff0-]{2,}(\S*)

2
Символи Unicode заборонені згідно з RFC 1738 на URL-адресах ( faqs.org/rfcs/rfc1738.html ). Їх потрібно було б кодувати на відсотки, щоб відповідати стандартам - хоча я думаю, що це, можливо, змінилося нещодавно - варто прочитати w3.org/International/articles/idn-and-iri
mrswadge

@mrswadge Я просто висвітлюю справи. Ми не впевнені, чи всі люди дбають про стандарт. Дякуємо за вашу інформацію.
Duc Filan

Тільки ця з мене прекрасно працювала, маючи URL-адреси, такі як " example.com " "www.exmaple.com" " example.com " " example.co.in " " exmaple.com/?q='me '"
Krissh

4

Якщо вам потрібно строго підбирати посилання, я б запропонував:

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

Для отримання додаткової інформації прочитайте це:

Покращений ліберальний, точний шаблон регулярного виразу для відповідних URL-адрес


2
Не роби цього. regular-expressions.info/catastrophic.html Це вб’є ваш додаток ...
Auric

4

Я знайшов це, що охоплює більшість зразків посилань, включаючи частини підкаталогу.

Regex - це:

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

3

Якщо у вас є шаблон URL-адреси, ви зможете шукати його у своєму рядку. Просто переконайтеся, що шаблон не має ^і $позначає початок і кінець рядка url. Отже, якщо P - шаблон для URL-адреси, знайдіть відповідність для P.


Це знайдений мною регулярний вираз, який перевіряє, чи весь рядок є URL-адресою. Я вийняв ^ на початку і $ в кінці, як ви сказали, і це все одно не спрацювало. Що я роблю не так? ^(http|https|ftp)\://[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(:[a-zA-Z0-9]*)?/?([a-zA-Z0-9\-\._\?\,\'/\\\+&amp;%\$#\=~])*[^\.\,\)\(\s]$
user758263

Це може допомогти, якщо ви покажете, якою мовою ви користуєтесь. У будь-якому випадку, обов’язково перевірте http://regexpal.com/; там ви можете перевірити різні вирази проти вашого рядка, поки ви не зрозумієте це правильно.
entonio

@ user758263 - вам справді потрібен такий складний регулярний вираз для URL-адреси? Залежить від того, які можливі URL-адреси ви можете насправді знайти. Також див. Gskinner.com/RegExr для випробування регулярних виразів . Вони також мають сотні зразків праворуч під Communityвкладкою, включаючи і URL-адреси
manojlds

Я намагаюся знайти всі можливі URL-адреси, і я використовую C ++. Дякую за посилання entonio та manojlds. Сайт gskinner був особливо корисним, оскільки він мав зразки.
user758263



2

Короткий і простий. Я ще не тестував код JavaScript, але, схоже, це буде працювати:

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

Код на regex101.com

Попередній перегляд коду


1
Мені сподобався ваш регулярний вираз, тому що він був саме тим, що я шукав: мені потрібно було визначити та вилучити URL-адреси з певного тексту, а не перевірити. Працював у рейках.
Дагмар,

@Dagmar Я радий це почути :)
bafsar


1

Це невелике вдосконалення / коригування (залежно від того, що вам потрібно) відповіді Раджеєва:

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

Дивіться тут приклад того, що це робить, а що не відповідає.

Я позбувся перевірки на "http" тощо, оскільки хотів перехопити URL-адреси без цього. Я трохи додав до регулярного виразу, щоб перехопити кілька затуманених URL-адрес (тобто де користувач використовує [крапку] замість "."). Нарешті я замінив "\ w" на "AZ" на та "{2,3}", щоб зменшити помилкові спрацьовування, такі як v2.0 та "moo.0dd".

Будь-які покращення у цьому привітанні.


[a-zA-Z]{2,3}дійсно погано відповідає TLD, див. офіційний список: data.iana.org/TLD/tlds-alpha-by-domain.txt . Крім того, ваш регулярний вираз відповідає _.........&&&&&&не впевненим, що це дійсна URL-адреса.
Тото

Дякуємо за це JE SUIS CHAELIE, будь-які пропозиції щодо вдосконалення (особливо щодо помилково позитивних)?
avjaarsveld

1

Можливо, занадто спрощеним, але робочим методом може бути:

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

Я протестував його на Python, і до тих пір, поки синтаксичний розбір рядків містить пробіл до і після і жодного в url (чого я ніколи раніше не бачив), це повинно бути добре.

Ось ідея в Інтернеті це демонструє

Однак ось деякі переваги його використання:

  • Він визнає , file:і localhostтак само , як IP - адреса
  • Без них воно ніколи не зрівняється
  • Це не проти незвичних персонажів, таких як #або -(див. Url цього повідомлення)

1

Використання регулярного виразу, наданого @JustinLevene, не мало належних послідовностей екранування на зворотних скісних рисках. Оновлено, щоб тепер воно було правильним, і додано в умові, щоб також відповідати протоколу FTP: Збігатиметься з усіма URL-адресами з протоколами або без них, а з "поза" без "www".

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

Приклад: https://regex101.com/r/uQ9aL4/65



1

Я написав одне:

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

Він працює на ВСІХ наступних доменах:

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

Ви можете побачити, як він працює тут, на регулярному виразі101 і відрегулювати за потребою


0

Я використовую логіку пошуку тексту між двома крапками або крапками

регулярний вираз нижче чудово працює з python

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



0
(?:vnc|s3|ssh|scp|sftp|ftp|http|https)\:\/\/[\w\.]+(?:\:?\d{0,5})|(?:mailto|)\:[\w\.]+\@[\w\.]+

Якщо ви хочете пояснити кожну частину, спробуйте у regexr [.] Com, де ви отримаєте чудове пояснення кожного символу.

Це розділяється на "|" або "АБО", оскільки не всі використовувані URI мають "//", отже, тут ви можете створити список схем як або умов, які вам цікаві.


0

Я використовую клас c # Uri, і він працює добре з 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

Мені сподобалося рішення Штефана Хенце, але воно набере 34,56. Це занадто загально, і я не розібрав html. Для URL-адреси передбачено 4 якоря;

www,

http: \ (і співпраця),

. слідують літери, а потім /,

або листи. і один із них: https://ftp.isc.org/www/survey/reports/current/bynum.txt .

Я використав багато інформації з цієї теми. Дякую вам всім.

"(((((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--)))"

Вище розв’язує майже все, крім рядка типу „eurls: www.google.com, facebook.com, http: //test.com/”, який він повертає як єдиний рядок. Tbh idk, чому я додав сусліка тощо. Доказ 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

Це найкращий.

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


-1

Це просто просто.

Використовуйте цей шаблон: \b((ftp|https?)://)?([\w-\.]+\.(com|net|org|gov|mil|int|edu|info|me)|(\d+\.\d+\.\d+\.\d+))(:\d+)?(\/[\w-\/]*(\?\w*(=\w+)*[&\w-=]*)*(#[\w-]+)*)?

Він відповідає будь-якому посиланню, що містить:

Дозволені протоколи: http, https та ftp

Дозволені домени: * .com, * .net, * .org, * .gov, * .mil, * .int, * .edu, * .info та * .me АБО IP

Дозволені порти: правда

Дозволені параметри: true

Дозволені хеші: правда

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.