php preg_match部分匹配

时间:2015-09-17 17:58:49

标签: php regex

我正在尝试将字符串解析为组件。我的解决方案适用于完整字符串,但我希望能够考虑具有可能更少组件的字符串。例如,我希望能够匹配G02F 1/1335G02F 1G02F等。使用preg_match,如果不是所有捕获组都匹配,则整个输出无效。

$string = 'G02F   1/1335';
$string = strtoupper(preg_replace('/\s+/', '', $string));
preg_match('%^([A-H])([0-9]{1,2})([A-Z])([0-9]{1,4})/([0-9]{1,6})$%', $string, $parsed);

1 个答案:

答案 0 :(得分:1)

正如@mario在评论中建议的那样,使用?选择子模式:

preg_match( '%^([A-H])(\d{1,2})([A-Z])\s*(\d{1,4})?/?(\d{1,6})?$%', $string, $parsed );