[英]PHP preg_replace regular expression separate numbers from the rest
我有一個很大的字符串需要分開。 它的某些部分有所不同,而有些則沒有。 我面臨的困難是我找不到符號或無法在preg_replace上使用的匹配項,因為它們都是字母數字。 這是字符串:
$str = "01;01;283;Póvoa do Vale do Trigo;15315100 01;01;249;Alcafaz;;;;;;;;;;;3750;011;AGADÃO 01;01;2504;Caselho;;;;;;;;;;;3750;012;AGADÃO _ 15 '' ghdhghg 01;01;25155;Corga da Serra;;;;;;;;;;;3750;013;AGADÃO 01;01;252;Foz;;;;;;;;;;;3750;014;AGADÃO 01;01;253;Guistola;;;;;;;;;;;3750;015;AGADÃO 01;01;254;Guistolinha;;;;;;;;;;;3750;016;AGADÃO 01;01;255;Lomba;;;;;;;;;;;3750;017;AGADÃO AND IT CONTINUES ...";
因此,如果我們看一下字符串的第一部分( 01;01;283;Póvoa do Vale do Trigo;15315100
),我想保留的是:
01;01;283;
並匹配:
;Póvoa do Vale do Trigo;15315100
並替換為空格。
最后,我要擁有:
01;01;283 01;01;249 01;01;2504; 01;01;25155 01;01;252 01;01;253 01;01;254 01;01;255
在我更換后:
;Póvoa do Vale do Trigo;15315100 ;Alcafaz;;;;;;;;;;;3750;011;AGADÃO ;Caselho;;;;;;;;;;;3750;012;AGADÃO _ 15 '' ghdhghg ;Corga da Serra;;;;;;;;;;;3750;013;AGADÃO ;Foz;;;;;;;;;;;3750;014;AGADÃO ;Guistola;;;;;;;;;;;3750;015;AGADÃO ;Guistolinha;;;;;;;;;;;3750;016;AGADÃO ;Lomba;;;;;;;;;;;3750;017;AGADÃO
通過""
對不起,我的葡萄牙語拼寫有誤。
這是代碼:
$str = "01;01;283;Póvoa do Vale do Trigo;15315100
01;01;249;Alcafaz;;;;;;;;;;;3750;011;AGADÃO
01;01;2504;Caselho;;;;;;;;;;;3750;012;AGADÃO _ 15 '' ghdhghg
01;01;25155;Corga da Serra;;;;;;;;;;;3750;013;AGADÃO 01;01;252;Foz;;;;;;;;;;;3750;014;AGADÃO
01;01;253;Guistola;;;;;;;;;;;3750;015;AGADÃO 01;01;254;Guistolinha;;;;;;;;;;;3750;016;AGADÃO
01;01;255;Lomba;;;;;;;;;;;3750;017;AGADÃO AND IT CONTINUES ...";
$str2 = preg_replace('/^([0-9]+;[0-9]+;[0-9]+).*[\r\n]+/m', '$1 ', $str."\n");
echo $str2;
輸出:
01;01;283 01;01;249 01;01;2504 01;01;25155 01;01;253 01;01;255
您可以嘗試以下方法:
$result = preg_replace('~(?:[0-9]+;?){3}\K;.+?(?=(?>[0-9]+;){3}|$)~s', ' ', $str);
想法是匹配3個數字,並使用\\K
將其從匹配結果中刪除。 然后,用.+?
匹配所有內容.+?
直到接下來的3個數字或字符串的末尾。
您可以嘗試的其他模式:
$result = preg_replace('~;[^0-9].+?(?=(?>[0-9]+;){3}|$)~s', ' ', $str);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.