正则表达式匹配逗号分隔的特定单词,有或没有连字符

时间:2017-04-17 06:36:11

标签: 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 and [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

3 个答案:

答案 0 :(得分:3)

应该这样做

<强> (ZB[\w\-]*)

在这里演示 https://regex101.com/r/D1dRxd/3

  

enter image description here

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

  

enter image description here

答案 1 :(得分:2)

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

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

答案 2 :(得分:2)

Demo

ZB[^,]*(?=,?)

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

希望这有帮助