代码之家  ›  专栏  ›  技术社区  ›  Ei Maung

PHP正则表达式替换?

  •  1
  • Ei Maung  · 技术社区  · 16 年前

    我想分开 字母数字 (有空间)和 非字母数字 字符串中的逗号。

    我试过了…

    $str = "This is !@#$%^&";
    preg_replace("/([a-z0-9_\s])([^a-z0-9_])/i", "$1, $2", $str);
    

    但我得到了这个结果…

    这是,!@

    如何修复搜索pattarn以获得此结果?

    这是!@

    谢谢。

    2 回复  |  直到 16 年前
        1
  •  3
  •   K Prime    16 年前

    在第二组中,你应该否定第一组中的所有内容,比如:

    preg_replace("/([a-z0-9_\s])([^a-z0-9_\s])/i", "$1, $2", $str);
    

    否则,它也会在空间上分裂。

        2
  •  0
  •   Kevin Peno    16 年前

    您可能需要在多个迭代中执行此操作。试试这个:

    $preg = array( "/([\w\s]+)/i", "/([\W\s]+)/i" ):
    $replace = array( "\\1, ", "\\1 " );
    $result = rtrim( preg_replace( $preg, $replace, $input ) ); // rtrim to get rid of any excess spaces