我有一堆这样的字符串:
a#aax1aay222b#bbx4bby555bbz6c#mmm1d#ara1e#abc
我需要做的是根据hashtag
位置将它们拆分为如下所示:
Array
(
[0] => A
[1] => AAX1AAY222
[2] => B
[3] => BBX4BBY555BBZ6
[4] => C
[5] => MMM1
[6] => D
[7] => ARA1
[8] => E
[9] => ABC
)
因此,正如您所看到的hashtag
,紧随其后的字符以及在下一个字符 + 主题标签之前的主题标签之后的所有内容都被捕获。
我有以下内容,只有当我在每个部分的末尾都有一个值时才能RegEx
正常工作。numeric
这是 RegEx 设置:
preg_split('/([A-Z])+#/', $text, 0, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE);
它适用于这样的事情:
C#mmm1D#ara1
但是,如果我把它改成这个(删除数字):
C#mmmD#ara
那么就会是这样的结果,不好说:
Array
(
[0] => C
[1] => D
)
所以,我的问题是为什么它只有在它后面跟着一个数字时才有效?以及我该如何解决?
在这里,您可以看到我拥有的一些示例字符串:
a#123b#abcc#def456 // A:123, B:ABC, C:DEF456
a#abc1def2efg3b#abcdefc#8 // A:ABC1DEF2EFG3, B:ABCDEF, C:8
a#abcdef123b#5c#xyz789 // A:ABCDEF123, B:5, C:XYZ789
PS 字符串不区分大小写。
PPS 如果您曾经想过这些字符串到底是什么,它们是用户提交的问卷答案,我无法对它们做任何事情,比如重构,因为它们已经存储并且只需要继续。
为什么不使用爆炸?
如果您查看我的示例,您会发现我还需要在 # 之前捕获字符。如果您认为有可能,explode()
请同时发布输出,谢谢!
更新
我们是否应该关注为什么/([A-Z])+#/
只有在包含数字时才有效?谢谢。