使用正则表达式PHP拆分字符串

使用正则表达式PHP拆分字符串,php,regex,split,Php,Regex,Split,我的字符串是“30okok30okokok120” 我想把它分成数字和“OK”字符串,我的预期输出是 array(0=>30,1=>OK,2=>OK,......,n=>120) 目前我正在使用这个 preg_match_all('!\d+!', $str, $matches); 但它只返回数字,即30,30120 请帮助我获得高于预期的输出您想要的是 preg_match_all('(\d+|OK)', $string, $matches); \d+-一个或多个

我的字符串是
“30okok30okokok120”
我想把它分成数字和“OK”字符串,我的预期输出是

array(0=>30,1=>OK,2=>OK,......,n=>120)
目前我正在使用这个

preg_match_all('!\d+!', $str, $matches);
但它只返回数字,即30,30120 请帮助我获得高于预期的输出

您想要的是

preg_match_all('(\d+|OK)', $string, $matches);
  • \d+
    -一个或多个数字
  • |
    -或
  • OK
    -大写字母
    O
    后跟大写字母
    K
    • 你想要的是

      preg_match_all('(\d+|OK)', $string, $matches);
      
      • \d+
        -一个或多个数字
      • |
        -或
      • OK
        -大写字母
        O
        后跟大写字母
        K

      根据您的输入示例,从效率最低的模式到效率最高的模式:


      • /\d+| OK/
        (96个步骤)根据您的输入示例,从效率最低的模式到效率最高的模式:


        • /\d+| OK/
          (96个步骤)感谢您在上编辑@falsetru
          explode
          OK@rtfm
          OK
          需要在结果中。使用
          explode
          OK
          作为分隔符意味着
          OK
          不会出现在结果中。感谢您在上编辑@falsetru
          explode
          OK@rtfm
          OK
          需要在结果中。使用
          explode
          OK
          作为分隔符意味着
          OK
          不会出现在结果中。您是如何计算步骤的?…对不起,我在这方面做得很差regex@LeenaVashistharegex101为您做了这样的计算:(一开始每个人在regex都是“坏”的,不要沮丧)你是怎么计算步数的?…对不起,我很不擅长regex@LeenaVashistharegex101为您做了这样的计算:(一开始每个人在regex都是“坏”的,不要沮丧)
          var_export(preg_split('/(OK)/',$in,null,PREG_SPLIT_NO_EMPTY|PREG_SPLIT_DELIM_CAPTURE));
          // or /([^\d]{2})/