我正在尝试将字符串解析为组件。我的解决方案适用于完整字符串,但我希望能够考虑具有可能更少组件的字符串。例如,我希望能够匹配G02F 1/1335
,G02F 1
,G02F
等。使用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);
答案 0 :(得分:1)
正如@mario在评论中建议的那样,使用?
选择子模式:
preg_match( '%^([A-H])(\d{1,2})([A-Z])\s*(\d{1,4})?/?(\d{1,6})?$%', $string, $parsed );