我需要帮助修复字符串,我需要使用" preg_replace"从字符串中删除DIGITS。在前两个字符串的任何字符之后,例子可以是:
目前正在使用: preg_replace(' / \ d /',''," A0123");
但它从一开始就删除了数字。任何人都可以帮忙吗?
更新:
AXZ1001:在这种情况下应该是产品AXZ
AX1001:在这种情况下,它应该是产品AX
A1001:在这种情况下应该是产品A1
答案 0 :(得分:1)
您可以使用\K
功能:
$str = preg_replace('~\A.{2,}?\K[0-9]+~', '', $str);
\K
从匹配结果中删除左边的所有内容。
由于.{2,}?
是一个惰性量词,所以匹配的字符最少(但至少为2),直到找到一个数字。它可以替换为:..[^0-9]*
如果您想处理此类字符串:ABC123XYZ999
以获取ABCXYZ
:
$str = preg_replace('~(?:\A..|(?!\A)\G)[^0-9]*\K[0-9]+~', '', $str);
\G
是最后一场比赛结束时的锚点。