开发者社区> 问答> 正文

php语言中求一个正则表达式

将下面的文字分割成5段
1、其他文字2、3.879(其他文字中包括小数)3.123加4、加其他(其他文字中包括数字和顿号)4、(其他文字为空)5.其他文字
(数字开头后面跟着顿号和点符号)
1、其他文字
2、3.879(其他文字中包括小数)
3.123加4、加其他(其他文字中包括数字和顿号)
4、(其他文字为空)
5.其他文字
如果不用正则,PHP下有其他解决办法吗?

展开
收起
落地花开啦 2016-06-12 11:09:18 1903 0
1 条回答
写回答
取消 提交回答
  • 喜欢技术,喜欢努力的人

    是指这个特例还是指普遍情况?
    如果是普遍情况的话,不可能在不解读文字语义的情况下靠纯正则实现。
    正则需要足够的约定条件来明确,比如说,是否每个行号后面的标点符号都按你上面的例子一样,1、2、4后面就是顿号,3、5后面就是点号?
    暂时先按照你这个特例来弄一个来玩玩。(其他文字为空)这部分我先当作删掉处理了。

    $t="1、其他文字2、3.879(其他文字中包括小数3.154)3.123加4、加其他(其他文字中包括数字和顿号)4、5.其他文字";
    $re='~
        1、[^\d]+
        |2、[^、]+(?=3\.)
        |3\..+(?=4、)
        |4、.*(?=5.)
        |5\..*
        ~x';
    if (preg_match_all($re, $t, $tokens, PREG_PATTERN_ORDER)) {
        foreach ($tokens[0] as $w) {
            echo "<br/>".$w."<br/>";
        }
    }
    2019-07-17 19:33:31
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
PHP 2017.北京 全球开发者大会——高可用的PHP 立即下载
PHP安全开发:从白帽角度做安全 立即下载
复杂PHP系统性能瓶颈排查及优化 立即下载