代码之家  ›  专栏  ›  技术社区  ›  Rich Bradshaw

Regex表示空格,但不是转义空格

  •  3
  • Rich Bradshaw  · 技术社区  · 14 年前

    -rwx------  1 user.name users   546879 2008-09-05 09:23 Newspaper_Templates.pdf
    -rwx------  1 user.name users   403968 2009-01-12 14:16 P2_05.ppt
    -rwx------  1 user.name users   144896 2009-01-12 14:08 P2.5_Using_CRO.ppt
    drwx------  8 user.name users     4096 2009-09-15 10:21 School\ 09-10
    drwx------  2 user.name users     4096 2010-06-28 13:59 SMART\ Notebook
    drwx------  2 user.name users     4096 2009-11-30 13:35 Templates
    

    我一次查看每一行,尝试用一个空格替换多个空格,除了那些用一个空格转义的空格。

    每一行都读入一个名为$filedata的变量,然后执行以下操作:

        $filedata = preg_replace("/\s+/", " ", $filedata);
        print_r (preg_split("/[\s]/", $filedata));
    

    (或者,有没有更好的办法?如果我能让ls给我一个列表,每个字段用逗号或别的什么隔开,那就更好了!)

    3 回复  |  直到 14 年前
        1
  •  1
  •   gnarf    14 年前

    是的,考虑到您正在使用 preg negative look-behind assertion :

    $filedata = preg_replace("/(?<!\\\\)\s+/", " ", $filedata);
    print_r(preg_split("/(?<!\\\\)\s/", $filedata));
    

    这个 (?<!\\\\) (?<!\\) 这意味着测试空白前的字符不是 \

        2
  •  1
  •   codaddict    14 年前

    这是一种非常容易出错的获取文件信息的方法。

    使用PHP函数 stat 为此目的。

        3
  •  0
  •   Bundyo    14 年前

    尝试 (?<!\\)\s+

    推荐文章