簡體   English   中英

PHP preg_replace正則表達式將其他數字分開

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM