$re = '/(^127\.0\.0\.1[\s]+|^0\.0\.0\.0[\s]+)([0-9a-z_.-]+$)|^([0-9a-z_.-]+$)/mi';
$str = '# hpHosts - FSA only
#
# The following are hosts in the hpHosts database with the FSA classification ONLY.
#
127.0.0.1 localhost #IPv4 localhost
127.0.0.1 localhost
::1 localhost #IPv6 localhost
#
# BAD SITES START HERE
#
0.0.0.0 very#badexample.com
very#badexample.com
domain@with.com
doma$in
AuThedMine.cOm
domain.0cf
127.0.0.1 0-0-----------------------------------------------------------0.com
127.0.0.1 0-google.com
127.0.0.1 00-lawyer.com
127.0.0.1 0000.support
0.01.2.13.3.sydneypropertyinvestors.com
0.01.2.23.3.sydneypropertyinvestors.com
000.9.009.09.ekurbani.com
000.9.019.09.ekurbani.com
000000-0.000webhostapp.com
00004563.000webhostapp.com
000m8ih.wcomhost.com
000m8n1.wcomhost.com
000m8pk.wcomhost.com
000m9w3.wcomhost.com
000macu.wcomhost.com
000magu.wcomhost.com
000map9.wcomhost.com
000may2.wcomhost.com
000mhl7.wcomhost.com
000mhpe.wcomhost.com
000mhpg.wcomhost.com
1xbet86.com
1xbet87.com
1xbet90.com
1xbet31.com
1xbet46.com
1xbet28.com
1xbet35.com
1xbet49.com
nejakyhost.cz
0.0.0.0 cnhv.co
0.0.0.0 coin-hive.com
0.0.0.0 coinhive.com
0.0.0.0 authedmine.com
0.0.0.0 api.jsecoin.com
0.0.0.0 load.jsecoin.com
0.0.0.0 server.jsecoin.com
0.0.0.0 miner.pr0gramm.com
0.0.0.0 minemytraffic.com
0.0.0.0 crypto-loot.com
0.0.0.0 cryptaloot.pro
0.0.0.0 cryptoloot.pro
0.0.0.0 coinerra.com
0.0.0.0 coin-have.com
0.0.0.0 minero.pw
0.0.0.0 minero-proxy-01.now.sh
0.0.0.0 minero-proxy-02.now.sh
0.0.0.0 minero-proxy-03.now.sh
0.0.0.0 api.inwemo.c
127.0.0.1 sfdfsdfsdfsdfsd
pool.pebblemedia.adhese.com';
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