我试图捕捉传感器的温度输出,为此,我有以下相关线路:Perl:这是好的还是坏的正则表达式,以及如何改进它?
temp1: +39.5 C (crit = +105.0 C)
Core 0: +40.0 C (high = +100.0 C, crit = +100.0 C)
Core 1: +40.0 C (high = +100.0 C, crit = +100.0 C)
我只需要每行(39.5,40.0,40.0)的第一个温度。这个问题当然是因为“Core 0”/“Core 1”中有一个额外的空间,所以我不能在单词数字上。
我想出了以下正则表达式,但是我被告知使用.*
对于正则表达式来说是一种有点懒惰和肮脏的方法。
$core_data =~ s/^.*\+(.*)C\ .*$/$1/g;
我想知道,是否有更紧密或更好的方法来完成这个或我做得好吗?
你说的是好是坏呢?效率似乎并不重要,除非你必须匹配成千上万的模式。似乎并非如此。 – VGE 2011-05-29 09:17:44
OTOH,可读性**是**重要的。确保你有附近的评论。 – pavium 2011-05-29 09:19:56
以学习为名的效率:)。另外我注意到我的正则表达式产生了一个带有空间主角特征的结果。我不认为这对我的目的很重要,但我仍然想知道如何摆脱它 – DanH 2011-05-29 09:20:39