我想在一组匹配的字符之间插入一个字符,使用正则表达式来定义组,使用PHP将字符放在匹配中. Looking here, 我看到它可能需要PHP递归匹配,尽管我想可能有一种更简单的方法.
为了说明,当一个数字旁边有2个或更多字母的组合时,我试图在字符串中插入一个空格.应在字母和数字之间插入空格.示例“AXR900DE3”应返回“AXR 900 DE 3”.
答案是使用preg_split来迭代地分解字符串并沿途插入空格吗?
我已经开始尝试使用下面的preg_replace作为模式2字母后跟一个数字(我还需要使用一个模式,一个数字后跟两个字母),但我需要另一个步骤来插入该匹配之间的空格.
$sku = "AXR900DEF334";
$string = preg_replace('/(?<=[A-Z]{2}[\d])/',' ', $sku);
解决方法:
你不需要做递归.
如果我理解正确,你应该能够这样做:
$sku = "AXR900DEF334";
$string = preg_replace('/((?<=[A-Z]{2})(?=[0-9])|(?<=[0-9])(?=[A-Z]{2}))/',' ', $sku);
echo $string;
OUTPUT
AXR 900 DEF 334
当字母在数字之前和之后,这将匹配.