2014-04-01 37 views
1

我有變量字符串,如下面:
The.Test.String.A01Y18.123h.WIB-DI.DO5.1.K.314-ECO
的。 Regex.F05P78.123h.WIB-DI.DO5.1.K.314-EYT
Word.C05F78.342T.DSW-RF.EF5.2.F.342-DDF使用正則表達式來提取字符串上半年

我希望提取這部分這些字符串在PHP中是動態的,我正在使用正則表達式,但並沒有取得太大的成功:
The.Test.String.A01Y18
The.Regex.F05P78
Word.C05F78

最終以:
測試字符串A01Y18
正則表達式F05P78
字C05F78

文的第一部分將在變數長度,並將每個單詞分隔一段時間。接下來的部分將永遠是相同的長度與圖案:
一個字母,數字2,一個字母,2個數字模式(C05F78)

後的字符串中的任何事情是我想刪除的內容。

+5

分享您的嘗試爲止。 – mario

+0

那麼它似乎並不是字符串的第一部分。 –

回答

1

就是這樣

$x=array(
    "The.Test.String.A01Y18.123h.WIB-DI.DO5.1.K.314-ECO", 
    "The.Regex.F05P78.123h.WIB-DI.DO5.1.K.314-EYT", 
    "Word.C05F78.342T.DSW-RF.EF5.2.F.342-DDF" 
); 

for ($i=0, $tmp_count=count($x); $i<$tmp_count; ++$i) { 
    echo str_replace(".", " ", preg_replace("/^(.+?)([a-z]{1}[0-9]{2}[a-z]{1}[0-9]{2})\..+$/i", "\\1\\2", $x[$i]))."<br />"; 
} 
1

使用正則表達式應該工作,與第一個捕獲組替換每個字符串:

^((?:\w+\.)+\w\d{2}\w\d{2}).* 

見演示在http://regex101.com/r/fR3pM6

1

這是有效的太:

preg_match("\.*[\w\d]{6}", stringVariable) 
01 。

*對於所有數字ATLEAST我們發現的字母和6個字符組成的詞的組合物([\ W \ d] {6})

結果:

Match 1: The.Test.Stsrisng.A01Y18  
Match 2: The.Regex.F05P78  
Match 3: Word.C05F78