2012-07-22 61 views
-1

我試圖使用PHP進化的正則表達式,但通過添加一個額外的單字符組,正則表達式不再發現任何匹配。正則表達式在PHP不匹配它應該在哪裏

前一版本是:

$pattern = '{\{[0-9]+[a-z][0,1][0,1]\}}'; 

字符串匹配像{010c10}或{009c10}。

我然後決定使字符串匹配通過將[0,1]字符,適應正則表達式如下演變:

$pattern = '{\{[0-9]+[a-z][0,1][0,1][0,1]\}}'; 

但是,正則表達式現在不再匹配的字符串等{010c100 } ,我真的不明白爲什麼。

+1

我會用'{\ {[0-9] + [AZ] [01] {3} \}}'你的情況下,我不知道的在方括號中用逗號分隔的字符的語法和含義。 – ashein 2012-07-22 14:32:11

+0

您是否嘗試過簡化模式和測試?像這樣:'$ pattern ='{\ {[0-9] + [a-z] [0,1] \}}';' – abelito 2012-07-22 14:34:26

+1

一個快速測試顯示它匹配...你如何匹配你的字符串? – Kobi 2012-07-22 14:35:36

回答

1
// match short versions, such as {010c10} 
$pattern = '/\{\d+[a-z][0,1]{2}\}/'; 

// match long versions, such as {010c100} 
$pattern = '/\{\d+[a-z][0,1]{3}\}/'; 

// match short and/or long versions 
$pattern = '/\{\d+[a-z][0,1]{2,3}\}/'; 
0

使用這種模式\{\d+[a-z][01]{3}\}

+3

好的,你已經簡化了正則表達式,但是如何幫助避免不匹配呢? – 2012-07-22 14:38:43

相關問題