我有一个字符串,我想用正则表达式分割:
这是字符串
D200001test_test_SMARTPHONE
第一部分由(D\d{6})覆盖 问题是只需要这部分。如果不存在,其他所有内容都是空的。
我需要将此字符串拆分为(在本例中) D200001(客户 ID) test_test(商店ID) 智能手机(布局)
最后的话(如果存在)只能是智能手机或平板电脑
但该解决方案还应该适用于以下字符串:
$testStrings = Array('D200001', 'D200001test', 'D200001test_test', 'D200001test_', 'D200001test_SMARTPHONE', 'D200001test_test_SMARTPHONE');
我想出了这个:
preg_match_all('/(D\d{6})([0-9a-z-_)]{0,})(_TABLET|_SMARTPHONE){0,1}/i', $string, $result);
它没有正确解析布局单词..
最佳答案
以下内容应该适合您的需求:
^(D\d{6})(.*?)(?:_(SMARTPHONE|TABLET))?$
第一组包含 customerId,第二组包含 shopId(如果有),第三组包含布局(如果有)。
关于regex - 使用正则表达式匹配自定义字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25741346/