$re = '`(https?://[-a-zA-Z0-9@:%._+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}[-a-zA-Z0-9()@:%_+.~#?&/=]*/?([-a-zA-Z0-9()@%_+~#?&/=]|\b))`m';
$str = 'Check https://example.com/path?param=value.with.dots for configuration.
Check https://example.com/path?param=value.with.dots.
Check https://example.com/path?param=value.with.dots. Or else.
Visit https://example.com for more information.
Check out https://github.com/user/repo, it\'s really good.
The API endpoint is https://api.service.com/v1/data; use it carefully.
Go to https://example.com: it has everything you need.
See https://docs.example.com? It explains the process.
Try https://example.com! It\'s amazing.
The site (https://example.com) is down for maintenance.
Links like https://example.com are common in emails.
Visit https://example.com/path/file.pdf and download it.
The URL https://example.com/api?key=123 returns JSON data.
Check https://example.com, https://test.org, and https://demo.net.
Go to https://example.com... wait, that\'s the wrong link.
The website https://example.com-- actually, never mind.
Visit https://example.com/path?q=value&r=2 for the search results.
See https://example.com/file.html, then click the button.
The documentation at https://docs.example.com; section 4.2 explains it.
Try https://example.com:8080/api/v1/users for user data.
Links: https://example.com, https://test.org; both are useful.
Go to https://example.com/path/to/resource, download the file.
The URL https://example.com/path#section contains the answer.
Visit https://example.com/very/long/path/here for details.
Check https://sub.domain.example.com for subdomain content.
The site https://example.com/path.with.dots has interesting content.
Go to https://example.com/path-with-dashes?, it\'s well organized.
See https://example.com/path_with_underscores for more info.
The endpoint https://api.example.com/v2/data?format=json returns data.
Visit https://example.com/file.tar.gz to download the archive.
The URL https://192.168.1.1:8080 is for local testing.
Go to https://example.com/path/ (note the trailing slash).';
preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);
// Print the entire match result
var_dump($matches);
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for PHP, please visit: http://php.net/manual/en/ref.pcre.php