【发布时间】:2015-08-14 17:15:27
【问题描述】:
以下信息应拆分为两个数组:
- foo089,bar[120-123,215]
所需的结果是两个数组,其中包含所有列出的数字 [089] 和 [120-123,215](更好的是 120,121,122,123 而不是 120-123,这是可选的)。
其他需要解析的例子:
- foo[133,370,390-391],bar120
- foo123
- bar145
- 酒吧[121,303]
- foo123,bar145
这些都应该产生一个双元素数组(第一个是 foo,第二个是 bar),可以是单个条目(例如 123 或 145)或范围(例如 133,370,390-391 或 121,303)。
我总是需要两个数组,方便判断数字是属于foo还是bar。
限制
- foo 或 bar 不必存在
- 如果两者都存在,它们总是有序的
- 数字总是有 3 位数字
- 只有foo和bar,没有别的词
- foo234,foo425 是不允许的。如果 foo 或 bar 有多个数字,则将其列在括号中
到目前为止,我尝试了以下正则表达式:\d{3}|foo\d{3}|bar\d{3}|\d{3}-\d{3}。
但是,使用 php 中的 preg_grep 我没有得到想要的结果。
【问题讨论】: