$re = '/\b(?:(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\.(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\.(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\.(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9]))|\:(\d*)\b/';
$str = '<http>1.0.170.50:80</http>
<http>1.1.189.58:8080</http>
<http>1.1.220.100:8080</http>
<http>1.2.252.65:8080</http>
<http>1.20.166.142:8080</http>
<http>1.32.59.217:47045</http>
<http>1.179.136.98:8080</http>
<http>1.179.144.41:8080</http>
<http>1.179.148.9:36476</http>
<http>1.186.85.38:1111</http>
<http>3.20.236.208:49205</http>
<http>3.215.177.148:49205</http>
<http>5.16.0.97:1256</http>
<http>5.16.0.174:8080</http>
<http>5.16.0.180:8080</http>
<http>5.16.1.17:8080</http>
<http>5.22.196.30:8080</http>
<http>5.44.62.166:8080</http>
<http>5.58.33.187:55507</http>
<http>5.59.145.129:8080</http>
<http>5.135.176.161:10000</http>
<http>5.153.234.91:3128</http>
<http>5.180.130.90:80</http>
<http>5.180.130.91:8080</http>
<http>5.188.136.52:8080</http>
<http>5.202.191.226:80</http>
<http>8.242.207.202:8080</http>
<http>12.88.29.66:9080</http>
<http>12.144.254.185:9080</http>
<http>12.218.209.130:13326</http>
<http>14.102.13.161:8080</http>';
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