簡體   English   中英

PHP Preg_match正則表達式結果

[英]PHP Preg_match Regular Expression Results

這是我的RE,我將其與preg_match_all PHP一起使用,但是得到的結果不准確http://screencast.com/t/FPsoJkAT

#(\d+/\d+/\d+)|(\d+:\d+(AM|PM).*?[$]\d)#i

我收到多余的行(空行+ PM和AM),應該跳過

當我嘗試使用RE Utility進行測試時,這是預期的結果。 http://screencast.com/t/RRteFlCD

有人請幫助我對該RE進行排序,以使該實用程序生成的正確結果與正確順序相匹配。

RE不能正常工作

 preg_match_all("#(\d+/\d+/\d+)|(\d+:\d+(AM|PM).*?[$]\d)#i",$response,$result);

輸入項

13年11月1日$ 4.34 10:02 PM Internet 79kbs $ 0.02 06:42 PM Internet34kbs $ 0.01 05:37 PM0438377989Optus SMS1 $ 0.000 05:21 PM Internet253kbs $ 0.06 03:59 PM0438377989Optus SMS1 $ 0.000 03:59 PM0438377989Optus SMS1 $ 0.000 03:59 PM0438377989Optus SMS1 $ 0.000 03:57 $ 0.10 12:34 PM Internet1659kbs $ 0.37 11:26 AM Internet54kbs $ 0.01 11:20 AM0411000321DIV-VoiceMail00:00:19 $ 0.00 11:20 AM Internet76kbs $ 0.02 11:19 AM0438377989Optus SMS1 $ 0.000 11:19 AM0438377989Optus SMS1 $ 0.000 10:02 AM0414828271sOptus SMS1 $ 0.000 10:02 AM0414828271s 03:15 $ 3.59 08:40 AM0411000321DIV-VoiceMail00:00:25 $ 0.00 08:39 AM Internet388kbs $ 0.09第1頁,共3頁打印用法詳細信息16/01/2013 https://www.optus.com.au/portal/site/customercentre / template .BINARYPORTLET / m ...(由於處理時間的緣故,最近的通話或接收數據的使用情況可能不會出現在上面的使用情況交易詳細信息頁面中。某些類型的包含值或通知也可能不會顯示 是的。 如果您更改費率計划或在整個賬單周期中生效的附加組件,則在下一個賬單周期開始之前,您的使用摘要將不准確。 顯示的金額包括:電話,后付費移動和移動寬帶服務專用的GST。 含GST的預付費移動服務。 13年10月1日$ 22.94 10:00 PM Internet239kbs $ 0.05 10:00 PM Internet46kbs $ 0.01 08:56 PM0417973105Optus SMS1 $ 0.000 08:51 PM0417973105Optus SMS1 $ 0.000 08:51 PM0417973105Optus SMS1 $ 0.000 08:45 PMPM041797s105Optus SMS1 $ 0.000 $ 0.03 06:00 PM0738483389Brisbane00:15:18 $ 13.41 04:22 PM0438377989Optus SMS1 $ 0.000 04:22 PM0438377989Optus SMS1 $ 0.000 02:20 PM Apps Usage Mobile152kbs $ 0.03 02:14 PM Internet154kbs $ 0.03 02:14 PM0282700700Sydney00:03:V:0:24$04124ice :55PM Internet958kbs $ 0.21 01:54 PM0282700517Sydney00:01:04 $ 1.95 01:53 PM0411000321VoiceMail00:00:32 $ 0.82 12:50 PM0411000321DIV-VoiceMail00:00:03 $ 0.00 12:18 PM0295521298Sydney00:00:07 $ 1.14 10:04 AM0411000321DIV 07AM Internet76kbs $ 0.02第2頁,共3頁打印用法詳細信息2013年1月16日https://www.optus.com.au/portal/site/customercentre /template.BINARYPORTLET/m ...使用余額可能不考慮上限 取消/折扣或調整。 對於Postpaid,如果您擁有7000多個記錄,則顯示的未開票使用率將是近似值。 請參閱發票以了解實際費用。 第3頁,共3頁打印用法詳細信息2013年1月16日https://www.optus.com.au/portal/site/customercentre /template.BINARYPORTLET/m ...

謝謝

preg_match_all()的結果數組是一個二維數組。 $result[0]是整個RE的所有匹配項的數組。 其余的$result[i]是每個匹配項中第i個捕獲組的數組。

因此,出於您的目的,您關心的只是$result[0] 我對此進行了測試,它包含47個元素。

另外,您可能應該將RE中的所有組更改為非捕獲組,以避免首先生成所有這些無關緊要的字符串。 所以每個(...)應該是(?:...)

print_r($result[0])打印:

Array
(
    [0] => 11/01/13
    [1] => 10:02PM Internet79kbs $0
    [2] => 06:42PM Internet34kbs $0
    [3] => 05:37PM0438377989Optus SMS1 $0
    [4] => 05:21PM Internet253kbs $0
    [5] => 03:59PM0438377989Optus SMS1 $0
    [6] => 03:59PM0438377989Optus SMS1 $0
    [7] => 03:59PM0438377989Optus SMS1 $0
    [8] => 03:57PM0438377989Optus SMS1 $0
    [9] => 12:40PM Internet462kbs $0
    [10] => 12:34PM Internet1659kbs $0
    [11] => 11:26AM Internet54kbs $0
    [12] => 11:20AM0411000321DIV-VoiceMail00:00:19 $0
    [13] => 11:20AM Internet76kbs $0
    [14] => 11:19AM0438377989Optus SMS1 $0
    [15] => 11:19AM0438377989Optus SMS1 $0
    [16] => 10:02AM0414828271Optus SMS1 $0
    [17] => 09:32AM Internet297kbs $0
    [18] => 08:46AM0282700517Sydney00:03:15 $3
    [19] => 08:40AM0411000321DIV-VoiceMail00:00:25 $0
    [20] => 08:39AM Internet388kbs $0
    [21] => 16/01/2013
    [22] => 10/01/13
    [23] => 10:00PM Internet239kbs $0
    [24] => 10:00PM Internet46kbs $0
    [25] => 08:56PM0417973105Optus SMS1 $0
    [26] => 08:56PM0417973105Optus SMS1 $0
    [27] => 08:51PM0417973105Optus SMS1 $0
    [28] => 08:51PM0417973105Optus SMS1 $0
    [29] => 08:45PM0417973105Optus SMS1 $0
    [30] => 06:15PM Internet23kbs $0
    [31] => 06:00PM Internet156kbs $0
    [32] => 06:00PM0738483389Brisbane00:15:18 $1
    [33] => 04:22PM0438377989Optus SMS1 $0
    [34] => 04:22PM0438377989Optus SMS1 $0
    [35] => 02:20PM Apps Usage Mobile152kbs $0
    [36] => 02:14PM Internet154kbs $0
    [37] => 02:14PM0282700517Sydney00:05:49 $5
    [38] => 02:03PM0411000321DIV-VoiceMail00:00:24 $0
    [39] => 01:55PM Internet958kbs $0
    [40] => 01:54PM0282700517Sydney00:01:04 $1
    [41] => 01:53PM0411000321VoiceMail00:00:32 $0
    [42] => 12:50PM0411000321DIV-VoiceMail00:00:03 $0
    [43] => 12:18PM0295521298Sydney00:00:07 $1
    [44] => 10:04AM0411000321DIV-VoiceMail00:00:26 $0
    [45] => 08:07AM Internet76kbs $0
    [46] => 16/01/2013
    [47] => 16/01/2013
)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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