为什么浮点没有正则表达式简写/预定义字符类?

时间:2015-02-24 00:31:20

标签: regex

我经常需要通过包含数字数据的文本文件进行grep。因此,我发现自己经常复制和粘贴浮点数的正则表达式。

我想知道为什么没有浮点数的简写或预定义字符类实体。例如,\ d是数字的简写。为什么不使用一些反斜杠序列(例如,\ p表示浮点?)

2 个答案:

答案 0 :(得分:2)

这是因为有几种浮点格式(一些比其他格式更常见)。就在C中,有as noted in tutorials,f和g格式可以被误认为是十进制整数(d)。在某些应用中,定点数是常见的,而在其他应用中,科学概念占主导地位。

答案 1 :(得分:1)

这是因为正则表达式字符类处理单个字符,即[a-c]将是a或b或c。查看浮点数时,您正在查看字符的模式而不是单个字符。整数甚至不是单个字符类。

\d[0-9]的简写,可以匹配任何单个数字,而\d+会匹配一串数字,但是这些数字可以严格地说是您不希望的整数,例如0001或00113或甚至08000234414141

要正确定义一个匹配浮点数的模式会非常复杂,它肯定会占用多个单个字符类,而且正如其他人所指出的那样,浮点数可能有许多不同的格式。