【问题标题】:How to split repeated chars and numbers with preg_split?如何使用 preg_split 拆分重复的字符和数字?
【发布时间】:2019-05-15 09:53:00
【问题描述】:

我正在尝试解决一些问题,我需要拆分重复的字符和所有整数

$code = preg_split('/(.)(?!\1|$)\K/', $code);

我试过这个,但它分开而不是重复的字符而不是重复的整数,我只需要字符

我有一个字符串'FFF86C6'

我需要一个数组(FFF, 86, C, 6)

带有模式'/(.)(?!\1|$)\K/' returns (FFF, 8, 6, C, 6)

你知道怎么做吗?

【问题讨论】:

    标签: php design-patterns preg-split


    【解决方案1】:

    您可以将此正则表达式与preg_match_all 一起使用:

    ([A-Za-z])(\1*)|\d+
    

    它查找一个字母,后跟一些相同字符的数字或一些数字。通过使用preg_match_all,我们可以在字符串中找到所有匹配项。 PHP 中的用法:

    $string = "FFF86CR6";
    $pieces = preg_match_all('/([A-Za-z])(\1*)|\d+/', $string, $matches);
    print_r($matches[0]);
    

    输出:

    Array (
      [0] => FFF
      [1] => 86
      [2] => C
      [3] => R
      [4] => 6 
    )
    

    Demo on 3v4l.org

    【讨论】:

    • 非常感谢,也许您知道如何在此模式中添加 ')' 和 '('?因此,如果字符串中有括号,它也会作为单个元素出现在数组中。这些模式是对我来说有点痛苦:(
    • @OlgaKriukova 你能举个例子说明你的意思吗?
    • if string 'FFF3RF(5' after preg_match_all : array('FFF', '3', 'R', 'F', '(', '5');
    • @OlgaKriukova 只需将() 的字符类添加到正则表达式。见3v4l.org/8Vl5a
    猜你喜欢
    • 2013-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多