regex - 使用正则表达式匹配自定义字符串

标签 regex string

我有一个字符串,我想用正则表达式分割:

这是字符串

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))?$

Regular expression visualization

第一组包含 customerId,第二组包含 shopId(如果有),第三组包含布局(如果有)。

可视化 Debuggex ,演示 regex101 .

关于regex - 使用正则表达式匹配自定义字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25741346/

相关文章:

php - 正则表达式替换所有匹配项,除非匹配项位于字符串的末尾

javascript - 如何从捆绑 .spec.js 文件中排除 webpack

c# - 使用分隔符连接字符串并考虑空字符串

java - 在 Java 中对字符串使用 >= 和 <=

c++ - 如何在 C++ 中将数字转换为字符串,反之亦然

c# - 正则表达式控制中的双引号

PHP:正则表达式 preg_replace_callback 匹配 PHP 中的所有数字

regex - 如何更改文本文件 linux/unix 中的日期格式

r - R:如何将数据帧值缩短为第一个字符

jquery - 拆分字符串并在单词之间添加连字符