2012-07-22 62 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