PHP正则表达式在前两个任意字符后替换数字

时间:2014-05-02 14:36:58

标签: php preg-replace

我需要帮助修复字符串,我需要使用" preg_replace"从字符串中删除DIGITS。在前两个字符串的任何字符之后,例子可以是:

  1. N02 [应删除2]
  2. AX1001 [应删除1001]
  3. AR2003 [应删除2003]
  4. AR [out put应为AR,因为没有数字]
  5. 目前正在使用: preg_replace(' / \ d /',''," A0123");

    但它从一开始就删除了数字。任何人都可以帮忙吗?

    更新:
    AXZ1001:在这种情况下应该是产品AXZ
    AX1001:在这种情况下,它应该是产品AX
    A1001:在这种情况下应该是产品A1

1 个答案:

答案 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是最后一场比赛结束时的锚点。