Biểu thức chính quy để tìm URL trong một chuỗi


95

Có ai biết về một biểu thức chính quy mà tôi có thể sử dụng để tìm URL trong một chuỗi không? Tôi đã tìm thấy rất nhiều cụm từ thông dụng trên Google để xác định xem toàn bộ chuỗi có phải là URL hay không nhưng tôi cần có khả năng tìm kiếm toàn bộ chuỗi cho các URL. Ví dụ: tôi muốn có thể tìm thấy www.google.comhttp://yahoo.comtrong chuỗi sau:

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

Tôi không tìm kiếm các URL cụ thể trong chuỗi. Tôi đang tìm TẤT CẢ các URL trong chuỗi, đó là lý do tại sao tôi cần một biểu thức chính quy.


Nếu bạn có biểu thức cho cả chuỗi, chỉ cần lấy ^ và $ ra để làm cho chúng khớp với các phần của chuỗi.
entonio

Câu trả lời:


206

Đây là cái tôi sử dụng

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

Làm việc cho tôi, cũng nên làm việc cho bạn.


7
Đừng quên thoát khỏi những nhát chém về phía trước.
Đánh dấu

1
Đó là năm 2017 và các tên miền unicode đã xuất hiện khắp nơi. \wcó thể không phù hợp với những biểu tượng quốc tế (phụ thuộc vào động cơ regex), phạm vi là cần thiết thay vì: a-zA-Z0-9\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF.
Michael Antipin

3
Điều này là tốt cho mục đích chung, nhưng có nhiều trường hợp mà nó không bắt được. Điều này bắt buộc rằng các liên kết của bạn được bắt đầu bằng giao thức. Nếu chọn bỏ qua các giao thức, phần cuối của email được chấp nhận như trường hợp của test@testing.com.
Squazz

4
không [\w_-]nên [\w-]? bởi vì các \wtrận đấu _đã có. per mozilla docs
transang

2
Được ủng hộ nhưng Câu trả lời này không hoạt động như những gì câu hỏi đang yêu cầu www.yahoo.com. """(http|ftp|https)://([\w_-]+(?:(?:\.[\w_-]+)+))([\w.,@?^=%&:/~+#-]*[\w@?^=%&/~+#-])?""".r.findAllIn("www.google.com").toList. CŨNG CHỐNG THẤM GIẢI THÍCH để có câu trả lời
Prayagupd

45

Guess no regex là hoàn hảo cho việc sử dụng này. Tôi tìm thấy một cái khá chắc chắn ở đây

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

Một số điểm khác biệt / lợi thế so với những cái khác được đăng ở đây:

  • không khớp với địa chỉ email
  • Nó khớp với localhost: 12345
  • Nó sẽ không phát hiện một cái gì đó như moo.comkhông có httphoặcwww

Xem ví dụ ở đây


4
nó phù hợp với www.e Đây không phải là url hợp lệ
Ihor Herasymchuk

Các gtùy chọn không hợp lệ trong tất cả các triển khai biểu thức chính quy (ví dụ như Ruby built-in thực hiện).
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)

Đầu ra:

[
    '/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

Thiếu &thông số trong url. ví dụ: http://test.com/method?param=wasd&param2=wasd2misses param2
TrophyGeek

10

Không có giải pháp nào được cung cấp ở đây giải quyết được các vấn đề / trường hợp sử dụng mà tôi gặp phải.

Những gì tôi đã cung cấp ở đây, là những gì tốt nhất tôi đã tìm thấy / làm cho đến nay. Tôi sẽ cập nhật nó khi tôi tìm thấy các trường hợp cạnh mới mà nó không xử lý được.

\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
Có cách nào để làm cho javascript này thân thiện không? Vì các nhóm thu thập được đặt tên không hoạt động đầy đủ ở đó, nên việc kiểm tra giá trị giao thức không xác thực.
einord

6

Tôi nghĩ mẫu regex này xử lý chính xác những gì bạn muốn

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

và đây là một ví dụ về đoạn mã để trích xuất 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

Tất cả các câu trả lời trên không khớp với các ký tự Unicode trong URL, ví dụ: http://google.com?query=đức+filan+đã+search

Đối với giải pháp, giải pháp này sẽ hoạt động:

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

2
Các ký tự Unicode bị cấm theo RFC 1738 trên các URL ( faqs.org/rfcs/rfc1738.html ). Họ sẽ phải phần trăm được mã hóa để phù hợp tiêu chuẩn - mặc dù tôi nghĩ rằng nó có thể đã thay đổi gần đây hơn - đáng đọc w3.org/International/articles/idn-and-iri
mrswadge

@mrswadge Tôi chỉ bao gồm các trường hợp. Chúng tôi không chắc liệu tất cả mọi người có quan tâm đến tiêu chuẩn hay không. Cảm ơn những thông tin của bạn.
Duc Filan

Chỉ cái này hoạt động hoàn hảo đối với tôi khi có các url như " example.com " "www.exmaple.com" " example.com " " example.co.in " " exmaple.com/?q='me '"
Krissh

4

Nếu bạn phải nghiêm ngặt trong việc lựa chọn các liên kết, tôi sẽ chọn:

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

Để biết thêm thông tin, hãy đọc phần này:

Mô hình Regex chính xác, tự do được cải thiện để phù hợp với URL


2
Đừng làm vậy. regular-expressions.info/catastrophic.html Nó sẽ giết ứng dụng của bạn ...
Auric

4

Tôi tìm thấy điều này bao gồm hầu hết các liên kết mẫu, bao gồm cả các phần thư mục con.

Regex là:

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

3

Nếu bạn có mẫu url, bạn sẽ có thể tìm kiếm nó trong chuỗi của mình. Chỉ cần đảm bảo rằng mẫu không có ^$đánh dấu đầu và cuối của chuỗi url. Vì vậy, nếu P là mẫu cho URL, hãy tìm các kết quả phù hợp cho P.


Đây là regex tôi tìm thấy để xác minh xem toàn bộ chuỗi có phải là URL hay không. Tôi đã lấy ra ^ ở chỗ ăn xin và $ ở cuối như bạn nói và nó vẫn không hoạt động. Tôi đang làm gì sai? ^(http|https|ftp)\://[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(:[a-zA-Z0-9]*)?/?([a-zA-Z0-9\-\._\?\,\'/\\\+&amp;%\$#\=~])*[^\.\,\)\(\s]$
user758263

Nó có thể hữu ích nếu bạn cho biết bạn đang sử dụng ngôn ngữ nào. Dù bằng cách nào, hãy chắc chắn để kiểm tra http://regexpal.com/; ở đó bạn có thể kiểm tra các biểu thức khác nhau đối với chuỗi của mình cho đến khi bạn hiểu đúng.
entonio

@ user758263 - bạn có thực sự cần một regex phức tạp như vậy cho url không? Phụ thuộc vào những url có thể mà bạn thực sự có thể tìm thấy. Ngoài ra, hãy xem gskinner.com/RegExr để dùng thử regex. Họ cũng có hàng trăm mẫu ở bên phải dưới Communitytab bao gồm cả những mẫu cho url
manojlds

Tôi đang cố gắng tìm kiếm tất cả các URL có thể có và tôi đang sử dụng C ++. Cảm ơn các liên kết entonio và manojlds. Trang web gskinner đặc biệt hữu ích vì nó có các mẫu.
user758263

3

Tôi đã sử dụng biểu thức chính quy bên dưới để tìm url trong một chuỗi:

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

2
[a-zA-Z]{2,3}thực sự kém để khớp với TLD, hãy xem danh sách chính thức: data.iana.org/TLD/tlds-alpha-by-domain.txt
Toto

3

Đây là một regexp được tối ưu hóa hơn một chút:

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

Đây là thử nghiệm với dữ liệu: https://regex101.com/r/sFzzpY/6

nhập mô tả hình ảnh ở đây


2

Ngắn gọn và đơn giản. Tôi chưa thử nghiệm mã javascript nhưng có vẻ như nó sẽ hoạt động:

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

Mã trên regex101.com

Xem trước mã


1
Tôi thích regex của bạn vì nó chính xác là những gì tôi đang tìm kiếm: Tôi cần xác định và loại bỏ các URL khỏi một số văn bản, không phải xác thực. Làm việc trong đường ray.
Dagmar

@Dagmar Tôi vui mừng khi biết rằng :)
bafsar


1

Đây là một cải tiến nhỏ về / điều chỉnh (tùy thuộc vào những gì bạn cần) câu trả lời của Rajeev:

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

Xem ở đây để biết ví dụ về những gì nó làm và không khớp.

Tôi đã bỏ kiểm tra "http", v.v. vì tôi muốn bắt url mà không có điều này. Tôi đã thêm một chút vào regex để bắt một số url bị xáo trộn (tức là nơi người dùng sử dụng [dấu chấm] thay vì dấu "."). Cuối cùng, tôi đã thay thế "\ w" bằng "AZ" thành và "{2,3}" để giảm các lỗi dương tính giả như v2.0 và "moo.0dd".

Bất kỳ cải tiến nào về chào mừng này.


[a-zA-Z]{2,3}thực sự kém để so khớp TLD, hãy xem danh sách chính thức: data.iana.org/TLD/tlds-alpha-by-domain.txt . Ngoài ra, regex của bạn khớp _.........&&&&&&không chắc đó là url hợp lệ.
Toto

Cảm ơn JE SUIS CHAELIE đó, bất kỳ đề xuất nào để cải thiện (đặc biệt là đối với dương tính giả)?
avjaarsveld

1

Một phương pháp có thể quá đơn giản, nhưng làm việc có thể là:

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

Tôi đã thử nghiệm nó trên Python và miễn là phân tích cú pháp chuỗi chứa khoảng trắng trước và sau và không có khoảng trắng nào trong url (mà tôi chưa từng thấy trước đây) thì sẽ ổn.

Đây là một lý tưởng trực tuyến chứng minh nó

Tuy nhiên, đây là một số lợi ích của việc sử dụng nó:

  • Nó nhận ra file:localhostcũng như địa chỉ ip
  • Nó sẽ không bao giờ phù hợp nếu không có họ
  • Nó không bận tâm đến các ký tự bất thường như #hoặc -(xem url của bài đăng này)

1

Sử dụng regex do @JustinLevene cung cấp không có trình tự thoát thích hợp trên các dấu gạch chéo ngược. Đã cập nhật để bây giờ là chính xác và được thêm vào trong điều kiện để khớp với giao thức FTP: Sẽ khớp với tất cả các url có hoặc không có giao thức và không có "www."

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

Ví dụ: https://regex101.com/r/uQ9aL4/65



1

Tôi đã viết một bài:

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

Nó hoạt động trên TẤT CẢ các miền sau:

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

Bạn có thể xem nó hoạt động như thế nào tại đây trên regex101 và điều chỉnh nếu cần


0

Tôi sử dụng logic tìm kiếm văn bản giữa hai dấu chấm hoặc dấu chấm

regex bên dưới hoạt động tốt với python

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


0

Tôi đã sử dụng cái này

^(https?:\\/\\/([a-zA-z0-9]+)(\\.[a-zA-z0-9]+)(\\.[a-zA-z0-9\\/\\=\\-\\_\\?]+)?)$

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

Nếu bạn muốn giải thích từng phần, hãy thử trong regexr [.] Com, nơi bạn sẽ nhận được lời giải thích tuyệt vời về mọi ký tự.

Điều này được phân tách bằng dấu "|" hoặc "HOẶC" vì không phải tất cả các URI có thể sử dụng đều có "//" nên đây là nơi bạn có thể tạo danh sách các lược đồ dưới dạng hoặc điều kiện mà bạn muốn đối sánh.


0

Tôi đã sử dụng lớp c # Uri và nó hoạt động tốt với Địa chỉ 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

Tôi thích giải pháp của Stefan Henze nhưng nó sẽ nhận 34,56. Nó quá chung chung và tôi có html chưa được phân tích. Có 4 neo cho một url;

www,

http: \ (và cộng sự),

. tiếp theo là các chữ cái và sau đó là /,

hoặc các chữ cái. và một trong số này: https://ftp.isc.org/www/survey/reports/current/bynum.txt .

Tôi đã sử dụng rất nhiều thông tin từ chủ đề này. Cảm ơn tất cả.

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

Ở trên chỉ giải quyết mọi thứ ngoại trừ một chuỗi như "eurls: www.google.com, facebook.com, http: //test.com/", nó trả về dưới dạng một chuỗi duy nhất. Tbh idk tại sao tôi thêm gopher, v.v. Mã chứng minh 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

Đây là điều tốt nhất.

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

-1

Đây là một trong những đơn giản nhất. cái nào phù hợp với tôi.

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

-1

Nó chỉ là đơn giản.

Sử dụng mẫu này: \b((ftp|https?)://)?([\w-\.]+\.(com|net|org|gov|mil|int|edu|info|me)|(\d+\.\d+\.\d+\.\d+))(:\d+)?(\/[\w-\/]*(\?\w*(=\w+)*[&\w-=]*)*(#[\w-]+)*)?

Nó khớp với bất kỳ liên kết nào chứa:

Giao thức được phép: http, https và ftp

Miền được phép: * .com, * .net, * .org, * .gov, * .mil, * .int, * .edu, * .info và * .me HOẶC IP

Cổng được phép: true

Các thông số được phép: true

Số băm được phép: true

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.