Php 正则表达式,用于匹配逗号内的特定单词,用连字符分隔或不用连字符分隔

Php 正则表达式,用于匹配逗号内的特定单词,用连字符分隔或不用连字符分隔,php,regex,Php,Regex,这是我的数据 ZP-S,ZB-MA-S,ZB,ZB-MA-M,ZB-MA-B,ZP,PY,ZB-ME-S,ZB-ME-M,PY,ZB-ME-B,PY-S,PY-M,PY-B,ZP-B,ZB-MA-S-LS-MLE-PES 这是我的正则表达式,我试过了 (^|,)(ZB)-?[^,]+(,|$) 我在这里的目的是检查逗号分隔列表中是否有以(ZB)开头的单词可以递归地包含(hypen和[A-Za-z0-9]+) 预期的匹配如下所示 ZB-MA-S ZB ZB-MA-M ZB-MA-B ZB-M

这是我的数据

ZP-S,ZB-MA-S,ZB,ZB-MA-M,ZB-MA-B,ZP,PY,ZB-ME-S,ZB-ME-M,PY,ZB-ME-B,PY-S,PY-M,PY-B,ZP-B,ZB-MA-S-LS-MLE-PES
这是我的正则表达式,我试过了

(^|,)(ZB)-?[^,]+(,|$) 
我在这里的目的是检查逗号分隔列表中是否有以
(ZB)开头的单词
可以递归地包含
(hypen和[A-Za-z0-9]+)

预期的匹配如下所示

ZB-MA-S
ZB
ZB-MA-M
ZB-MA-B
ZB-ME-S
ZB-ME-M
ZB-ME-B
ZB-MA-S-LS-MLE-PES

尝试
ZB[a-zA-Z0-9\-\\\\\\\\\\\]*


这将匹配ZB后面的所有字母数字字符、下划线和连字符

这将匹配ZB后面的所有字母数字字符、下划线和连字符

我要寻找的是匹配以搜索字符串
ZB
开头的任何逗号分隔的值,并保持匹配,只要我没有点击

希望这有帮助

我要寻找的是匹配以搜索字符串
ZB
开头的任何逗号分隔的值,并保持匹配,只要我没有点击


希望这有帮助,这应该可以

(ZB[\w\-]*)

此处演示

ZB
匹配字符
ZB
字面意思(区分大小写)
\w
匹配任何单词字符(等于[a-zA-Z0-9])
\-
匹配字符-字面上(区分大小写)
*
量词-在零次和无限次之间进行匹配,尽可能多次匹配,并根据需要返回


这应该可以

(ZB[\w\-]*)

此处演示

ZB
匹配字符
ZB
字面意思(区分大小写)
\w
匹配任何单词字符(等于[a-zA-Z0-9])
\-
匹配字符-字面上(区分大小写)
*
量词-在零次和无限次之间进行匹配,尽可能多次匹配,并根据需要返回


不匹配ZB而不使用连字符(ZB[\w\-]*)修复了“ZB”匹配不匹配ZB而不使用连字符(ZB[\w\-]*)修复了“ZB”匹配完全不必要的前瞻完全没有必要
ZB[^,]*(?=,?)