gpt4 book ai didi

php - 空格的正则表达式,但不是转义空格

转载 作者:搜寻专家 更新时间:2023-10-31 21:18:15 25 4
gpt4 key购买 nike

我正在解析 ls -lb 的输入并尝试将每个字段放入 PHP 中的数组中。

我的输入看起来像这样:

-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 给我列表,每个字段用逗号或其他东西分隔,那就更好了!)

最佳答案

是的,假设您使用的是 preg功能,您可以使用 negative look-behind assertion :

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

(?<!\\\\)被 PHP 字符串处理为 (?<!\\)这意味着测试空白之前的字符不是 \

关于php - 空格的正则表达式,但不是转义空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3678706/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com