regex -找到第一个模式时停止[重复]

8wtpewkr  于 2023-04-22  发布在  其他
关注(0)|答案(1)|浏览(145)

此问题已在此处有答案

Regular expression to stop at first match(9个回答)
5天前关闭。
我有这段文字

/dev/disk0s2   3.6Ti  2.9Ti  796Gi    79% 383906083 104366287   79%   /
/dev/disk0s3   1.2Ti  1.3Ti  796Gi    79% 383906083 104366287   79%   /

使用(参见https://regex101.com/r/44YqQe/1

(\/dev\/disk0s2).* (\d*\.\d+)?Ti

预期结果:3.6
实际结果:2.9
提问
如何匹配并在第一个匹配时停止?

dwthyt8l

dwthyt8l1#

根据您的情况,您可以使用以下解决方案之一。
如果预期磁盘和大小之间只有空格:(\/dev\/disk0s2)\s*(\d*\.\d+)?Ti .
如果可以预期任何符号,并且您正在使用支持类似PCRE的正则表达式的工具:(\/dev\/disk0s2).*? (\d*\.\d+)?Ti,利用lazy matching匹配Ti之前的第一个数字。
如果使用bash工具(如sed),您可能需要像(\/dev\/disk0s2).* (\d*\.\d+)?Ti (\d*\.\d+)?Ti这样的工具。

相关问题