Php 解析正则表达式
我正在进行一个项目,需要将数据库()解析为一个数据库 我需要找出每个成员,所以我需要它来匹配xx之间的所有内容。和\n\nxx。其中x是任何小写字母 以下是文件的几行:Php 解析正则表达式,php,regex,ip-address,Php,Regex,Ip Address,我正在进行一个项目,需要将数据库()解析为一个数据库 我需要找出每个成员,所以我需要它来匹配xx之间的所有内容。和\n\nxx。其中x是任何小写字母 以下是文件的几行: ad.andorpac Servei de Telecomunicacions d'Andorra 19960627 194.158.64.0/19 ALLOCATED PA 20050104 85.94.160.0/19 ALLOCATED PA 20061117 91.
ad.andorpac
Servei de Telecomunicacions d'Andorra
19960627 194.158.64.0/19 ALLOCATED PA
20050104 85.94.160.0/19 ALLOCATED PA
20061117 91.187.64.0/19 ALLOCATED PA
20091124 109.111.96.0/19 ALLOCATED PA
20120925 185.4.52.0/22 ALLOCATED PA
20110722 2a02:8060::/31
ae.absl-me
Asia Broadcast Satellite Ltd (Middle East)
20110321 31.47.88.0/21 ALLOCATED PA
ae.adac
Abu Dhabi Airports Company PJSC
20120402 37.218.224.0/21 ALLOCATED PA
我不是正则表达式专家,有人能提供这些表达式吗?您不需要非常复杂的正则表达式来解析它。您可以按分隔符拆分,然后解析每个条目:
// $string contains the text
$entries = explode("\n\n", $string);
for($i=0; $i < sizeof($entries); $i+=2){
parse_header($entries[$i]));
parse_entries($entries[$i+1]);
}
比如:
preg_match_all("/[a-z]{2}\..*?\n\n[a-z]{2}\./s", $text, $matches)
应该有用
这假设您对问题的描述是准确的!如果不是这样,你可以期待这个正则表达式被证明是非常脆弱的
(即:\n\n[a-z]{2}\.
出现的不希望出现的情况,您希望在每个匹配中包含下一个条目的前3个字符,两个新行将始终出现在您的记录之间,并且它们将相邻,之间没有任何其他字符,包括任何空格等)
好吧,我猜你并不真的想得到结尾“xx”。作为比赛的一部分,所以另一种选择是对它使用前瞻,比如:
preg_match_all("/[a-z]{2}\..*?\n\n(?=[a-z]{2}\.)/s", $text, $matches)
preg_match_all("/[a-z]{2}\..*?\n\n[a-z]{2}\./s", $text, $matches)
preg_match_all("/[a-z]{2}\..*?\n\n(?=[a-z]{2}\.)/s", $text, $matches)