我正在尝试解析绑定DNS根区域文件中的域名列表。我的正则表达式适用于regex101.com(https://regex101.com/r/uP3dT7/2),但是在使用PHP和实时数据进行测试时,它找不到任何匹配项。
原因可能在哪里?我想在格式化的某处,但如果它在regex101.com中有用......
$re = "/(^\S+\.(?:eus|tld))\.\s*86400(?!.*?^\1\.\s*86400)/ms";
preg_match_all($re, $content, $matches);
var_dump ($matches);
这是我的代码。也许问题在于正则表达式,如果没有,则是实时数据的格式化。
答案 0 :(得分:0)
没有锚点,效果非常好:
<?php
$data = <<<DATA
pblxare.eus. 86400 in ns ns1.cdmon.net. pblxare.eus. 86400 in ns ns2.cdmon.net. pblxare.eus. 86400 in ns ns3.cdmon.net. eginirribarre.eus. 86400 in ns alt.guebs.com. eginirribarre.eus. 86400 in ns alt2.guebs.com. eginirribarre.eus. 86400 in ns alt3.guebs.com. n80i564smh8rfmcej1l.eus. 43200 in nsec3 1 0 12 e5b2f7n ns n8g4vh050i5641l.eus. 43200 in rrsig nsec3 10 2 frgrgrht.eus. 86400
DATA;
$regex = "~(\S+\.(?:eus|tld))\.\s*86400(?!.*?\1\.\s*86400)~ms";
preg_match_all($regex, $data, $matches);
print_r($matches);
?>