如何使用正则表达式取出文本中的特定值
来源:百度知道 编辑:UC知道 时间:2024/05/28 06:20:46
比如说我的文本文件中有以下值
CBWH000,112201,CBCB000,,,,23552
CBWH000,112201,CBHB000,,,,1396700.95
CBWH000,112201,CBBB000,,,,247444.54
CBWH000,112201,,AG02,,,5405.65
CBWH000,112201,CBCB000,AG09,,,23552
CBWH000,112201,CBHB000,AG09,,,1396700.95
CBWH000,112201,CBBB000,AG09,,,247444.54
CBWH000,112201,,,Mainland,,5405.65
CBWH000,112201,CBCB000,,Mainland,,23552
CBWH000,112201,CBHB000,,Mainland,,1396700.95
CBWH000,112201,CBBB000,,Mainland,,247444.54
CBWH000,112301,,,,,54636.68
CBWH000,112306,,,,,35000
CBWH000,112301,,AG01,,,54636.68
我需要一些符合一定条件的行,条件是:
(1)第三个逗号前有值
(2)第四个逗号前有值或第五个逗号前有值
正则表达式应该怎么写啊?
CBWH000,112201,CBCB000,,,,23552
CBWH000,112201,CBHB000,,,,1396700.95
CBWH000,112201,CBBB000,,,,247444.54
CBWH000,112201,,AG02,,,5405.65
CBWH000,112201,CBCB000,AG09,,,23552
CBWH000,112201,CBHB000,AG09,,,1396700.95
CBWH000,112201,CBBB000,AG09,,,247444.54
CBWH000,112201,,,Mainland,,5405.65
CBWH000,112201,CBCB000,,Mainland,,23552
CBWH000,112201,CBHB000,,Mainland,,1396700.95
CBWH000,112201,CBBB000,,Mainland,,247444.54
CBWH000,112301,,,,,54636.68
CBWH000,112306,,,,,35000
CBWH000,112301,,AG01,,,54636.68
我需要一些符合一定条件的行,条件是:
(1)第三个逗号前有值
(2)第四个逗号前有值或第五个逗号前有值
正则表达式应该怎么写啊?
<?php
$doc = file('s.php');
echo '<pre>';
print_r($doc);
echo '</pre><hr><pre>';
print_r(getlines($doc));
echo '</pre>';
function getlines(&$doc){
foreach($doc as $record){
$tmpary = explode(',' , $record);
if(!empty($tmpary[2]) && (!empty($tmpary[3]) || !empty($tmpary[4]))){
$ary[] = $record;
}
}
return $ary;
}
?>
(1)
/^(([^,]*,){2})[^,]+,/
(2)
/^(([^,]*,){3,4})[^,]+,/
补充:
如果要取整行,在后面加 .*$ 。
/^(([^,]*,){2})[^,]+,.*$/
/^(([^,]*,){3,4})[^,]+,.*$/