正则表达式匹配字符串中的第二个或最后一个十进制数

时间:2013-10-18 19:09:53

标签: regex

字符串:

<LF><CR>A214 pH/ISE,X00066,2.59,ABCDE,10/16/13 22:06:59,ABC1,CH-1,pH,7.00,pH,0.0, mV,25.0,C,100.0,%,M100,#35<LF><CR>

我只需匹配7.00 - 这个数字可以是0.00 - 14.00(其pH读数)。

现在我只能提出[0-9]{1,2}\.[0-9]{2},它也与前面出现在字符串中的软件修订号相匹配(2.59

非常感谢任何帮助。

编辑:谢谢大家。我通过使用[0-9]{1,2}\.[0-9]{2}(?=,p)

来解决这个问题

3 个答案:

答案 0 :(得分:1)

只需查找所有条目并获取最后一条:

>>> s = "A214 pH/ISE,X00066,2.59,ABCDE,10/16/13 22:06:59,ABC1,CH-1,pH,7.00,pH,0.0, mV,25.0,C,100.0,%,M100,#35"
>>> re.findall("[0-9]{1,2}.[0-9]{2}", s)[-1]
'7.00'

您可以使用PH介于0-14之间的信息(第一个数字只能一个等)来改进该正则表达式。或者更好,只需用逗号分隔或使用csv模块。

答案 1 :(得分:0)

如果字符串的格式是固定的,即如果您在,上拆分,则数据位于第9位。例如,使用例如AWK:

$ awk -F, '{print $8, $9}' input
pH 7.00

或在awk模式下使用perl:

$ perl -F, -lane 'print $F[8]' input
7.00

或者这个正则表达式

pH,(\d+\.\d{2})

http://www.rubular.com/r/3kkWNVBAi8

上查看该行

答案 2 :(得分:0)

也许你可以使用它:

pH,(([0-9]|1[0-4])\.\d{2}),pH

您需要的第1组匹配号码。那个控制数据