簡體   English   中英

PHP preg_match_all正則表達式

[英]PHP preg_match_all regex

如果我有這樣的字符串: 10/10/12/12

我正在使用:

$string = '10/10/12/12';
preg_match_all('/[0-9]+\/[0-9]+/', $string, $results);

這似乎只匹配10/1012/12 我也想比賽10/12 是因為10/10匹配后從圖片中刪除了嗎? 因此,在第一次比賽之后,它只會匹配/12/12

如果我想匹配所有10/10 10/12 12/12 10/12 12/12 10/12 12/12 ,我的正則表達式應該是什么樣? 謝謝。

編輯:我做到了

$arr = explode('/', $string);
$count = count($arr) - 1;
$newarr = array();
for ($i = 0; $i < $count; $i++)
{
    $newarr[] = $arr[$i].'/'.$arr[$i+1];
}

我建議不要使用正則表達式。 相反,您可以例如使用explode首先在斜杠上分割。 然后遍歷這些部分,檢查兩個連續的部分,它們都僅由數字組成。


正則表達式不起作用的原因是因為匹配項消耗了它匹配的字符。 從下一個比賽結束的位置開始搜索下一個比賽。

如果您確實想使用正則表達式,則可以使用零寬匹配(例如前瞻)來避免消耗字符,並將捕獲匹配項放入前瞻中。

'#[0-9]+/(?=([0-9]+))#'

看到它在線上工作: ideone

暫無
暫無

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

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