正则表达式在 C# 中拆分 OSX df -h 输出

Posted

技术标签:

【中文标题】正则表达式在 C# 中拆分 OSX df -h 输出【英文标题】:Regex split OSX df -h output in C# 【发布时间】:2021-03-29 02:35:58 【问题描述】:

我正在解析一些 mac OSX 日志文件,并且遇到了 df -h 命令的输出,我现在需要对其进行拆分。该行看起来像:

Filesystem     Size   Used  Avail Capacity iused      ifree %iused  Mounted on

现在我不能只在 space 字符上进行拆分,因为其中有一个空格 Mounted on,但是我需要把它分成九个字段。

我尝试使用\s2, 仅在多个空格上进行拆分,但是AvailCapacity 字段之间存在单个空格,所以我对如何处理这个问题有点迷茫。

任何建议将不胜感激。

【问题讨论】:

它看起来像固定宽度的 csv 数据。见***.com/questions/11365466/… 没有“固定宽度的 CSV”搜索。它是固定宽度或 CSV。 【参考方案1】:

好像Mounted可以是onoff对吧?

你可以像这样使用它:

((Mounted .+?)|.+?)(\s+|$)

DEMO

你也可以用空格\s+分割它,你已经知道Mounted后面的词属于它。

【讨论】:

No 'Mounted on' 只是一个包含系统上安装点的字符串。不过谢谢 @Tony 检查我编辑的答案。如果安装这个词是曾经导致的问题。它应该解决它 谢谢,\s+ 似乎完成了这项工作。

以上是关于正则表达式在 C# 中拆分 OSX df -h 输出的主要内容,如果未能解决你的问题,请参考以下文章

C# 正则表达式拆分但如果拆分失败则包含空字符串

C# 正则表达式匹配与拆分相同的字符串

C# 正则表达式拆分引号和逗号语法错误 [重复]

如何使用正则表达式拆分字符串以返回值列表?

C# 正则表达式匹配案例 - 拆分字符串并写入文件输出

Java 和 C# 正则表达式不产生相同的结果