按行分组匹配

时间:2019-06-09 09:45:41

标签: c# regex

我的文字在这样的列中:

drwxrwxrwx   1 owner    group               0 Aug 21  2017 file1.zip
-rwxrwxrwx   1 owner    group               0 Jun  2 13:03 file2.zip
-rwxrwxrwx   1 owner    group       584370643 Jun  2 13:01 file3.zip
drwxrwxrwx   1 owner    group               0 Jun  2 13:02 file4.zip

我制作了正则表达式来捕获列数据,如下所示:

/\S*[^\s]/gm

但是,它使所有内容变成1组。我想要的是每个组都是单独的一行,但是我不知道如何使用$行尾运算符来实现这一点。

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:2)

这是应该与每一行匹配的常规模式:

(\S+)\s+(\d+)\s+(\S+)\s+(\S+)\s+(\d+)\s+(\w{3}\s+\d{1,2}\s+(?:\d{4}|\d{2}:\d{2}))\s+(.*)

Demo

此模式将生成7个捕获组,每列一个。