2014-01-06 46 views
0

我面臨一個我無法解決的問題。我有一個由不需要的文本和總是以「2」或「6」開頭的10位數字組成的字符串。我需要將10位數字中的數字轉換爲數組。我想到了正則表達式,發現這篇文章Regular Expression for matching a numeric sequence?這是非常接近我需要的東西(除了降序/升序的東西),但我永遠不會和將永遠不能理解正則表達式,我不能修改我的需要。如果有人能幫助我,我會非常感謝!查找(正則表達式?)連續10個數字(PHP)

這裏是我的字符串的一個樣本:

".........693 7098469 - ZQH X Bop. Hrtepou 50 flerpoUrroXn ........210 5014166 - 0E000PA E KapaoAn Anpn-rPou 21 
EAArivtg .....................................................210 9618677 - MAPIA KapaoAri Arpn-rptou 21 Elanvolo .. 210 9643623 - MAPIA E ...................................................... 210 9643887 - MAPIA 0 loucrrivou 8 HX.toOrran ..............210 9914534 AIPITAKHE APTEMIOE n Avrtnopou 22 
Reptcrrept ....._.........._......._................697 7440896 , -10AN." 

非常感謝你提前! 來自希臘的問候!

+1

感謝您的編輯......我不能讓這個該死的代碼塊在那裏! :-) –

+1

好的..你有什麼試過?向我們展示您嘗試過的以及爲什麼它不起作用。 – Daedalus

+0

你的預期產量是多少? – anubhava

回答

3

當我看到您的字符串的數字具有之間的空間,如果你想嚴格進行選擇,這是正則表達式:

[62]\d{2}\s*\d{7} 

說明

[62] # Start with 6 or 2 
\d{2} # 2 more digits 
\s*  # any number of white spaces 
\d{7} # 7 more digits 

Live demo

和PHP具有preg_match_all代碼以匹配這些字符串的所有出現:

preg_match_all("/[62]\d{2}\s*\d{7}/", $text, $matches); 

輸出

Array 
(
    [0] => 693 7098469 
    [1] => 210 5014166 
    [2] => 210 9618677 
    [3] => 210 9643623 
    [4] => 210 9643887 
    [5] => 210 9914534 
    [6] => 697 7440896 
) 

PHP live demo

+0

非常感謝您的解釋!我真的認爲正則表達式將永遠是我的剋星... –

+0

@ JimBadanis-Kapirnas *除了常規名稱 - 正則表達式 - 它非常討厭!* – revo

3

也許是這樣的:

<?php 
$x= 
".........693 7098469 - ZQH X Bop. Hrtepou 50 flerpoUrroXn ........210 5014166 - 0E000PA E KapaoAn Anpn-rPou 21  EAArivtg ....................................................210 9618677 - MAPIA KapaoAri Arpn-rptou 21 Elanvolo .. 210 9643623 - MAPIA E ...................................................... 210 9643887 - MAPIA 0 loucrrivou 8 HX.toOrran ..............210 9914534 AIPITAKHE APTEMIOE n Avrtnopou 22 
Reptcrrept ....._.........._......._................697 7440896 , -10AN."; 
$x=str_replace(' ','',$x); 
preg_match_all('/((2|6)\d{9})/',$x,$matches); 
print_r($matches[0]); 

而結果:

Array 
(
    [0] => 6937098469 
    [1] => 2105014166 
    [2] => 2109618677 
    [3] => 2109643623 
    [4] => 2109643887 
    [5] => 2109914534 
    [6] => 6977440896 
) 
+0

哇......我覺得這麼小......非常感謝你! –

2

有一個很酷的網頁,該可視化的正則表達式代碼更好understading: https://www.debuggex.com/

這應該工作

((?:2 | 6)[0-9] {2 } [0-9] {7})

Regular expression visualization