Php 什么';分隔字符串的数字部分和非数字部分的最有效方法是什么?

Php 什么';分隔字符串的数字部分和非数字部分的最有效方法是什么?,php,regex,Php,Regex,我得到了由标签、下划线和ID组成的字符串: “类别4” “办公室362” “核心市场”56 我想要的是两个不同的块: 数组(“类别”,4) 阵列(“办公室”,362) 阵列(“核心市场”,56) 我知道我可以分离出数值,然后转过身从原始字符串中减去,但我不确定是否有更干净的方法可以一步完成。Explode的limit参数似乎很接近,我感觉有一个正则表达式模式,它只能被最后一个下划线分割。这就是您想要的正则表达式 (\w*)_(\d*) 第一组匹配的是你的单词,第二组匹配的是数字。当然,

我得到了由标签、下划线和ID组成的字符串:

  • “类别4”
  • “办公室362”
  • “核心市场”56
我想要的是两个不同的块:

  • 数组(“类别”,4)
  • 阵列(“办公室”,362)
  • 阵列(“核心市场”,56)

我知道我可以分离出数值,然后转过身从原始字符串中减去,但我不确定是否有更干净的方法可以一步完成。Explode的
limit
参数似乎很接近,我感觉有一个正则表达式模式,它只能被最后一个下划线分割。

这就是您想要的正则表达式

(\w*)_(\d*)

第一组匹配的是你的单词,第二组匹配的是数字。当然,这是基于这样一个假设,即数字总是在末尾,并且与单词之间用下划线隔开。

这就是您想要的正则表达式

(\w*)_(\d*)

第一组匹配的是你的单词,第二组匹配的是数字。当然,这是基于,假设数字总是在末尾,并用下划线与单词分隔。

我认为解析的最有效方法是在末尾有一个固定长度的数值字段,这样您就可以始终从字符串的末尾计算出准确的字符数,并知道其余的字符数(减去分隔符)将是文本部分

# Example with fixed length numeric portion of 8 digits
$N = 8;
$s = "SomeText_00000001";
$text = substr($s, 0, strlen($s) - $N - 1);
$num = substr($s, -$N);

我认为解析目的最有效的方法是在末尾有一个固定长度的数字字段,这样您就可以始终从字符串末尾计算出确切的字符数,并知道剩余的(减去分隔符)将是文本移植

# Example with fixed length numeric portion of 8 digits
$N = 8;
$s = "SomeText_00000001";
$text = substr($s, 0, strlen($s) - $N - 1);
$num = substr($s, -$N);
以上内容将返回

([0] => Array (
            [0] => category
            [1] => 4)
 [1] => Array (
            [0] => office
            [1] => 362)
 [2] => Array (
            [0] => core_market
            [1] => 56))
以上内容将返回

([0] => Array (
            [0] => category
            [1] => 4)
 [1] => Array (
            [0] => office
            [1] => 362)
 [2] => Array (
            [0] => core_market
            [1] => 56))

谢谢你的回答和解释,我很感激!谢谢你的回答和解释,我很感激!谢谢你回答技术效率部分。不幸的是,我不能确定ID的长度,但问题中也不清楚。谢谢你回答技术效率部分。不幸的是,我不能确定ID的长度身份证,但问题也不清楚。