Python正则表达式匹配第2或第3个单词

时间:2016-10-09 05:03:54

标签: python regex

我正在尝试使用正则表达式将线条分成3个部分,典型的线条适合这种模式:-30.345 150.930 112.356

我正在使用lat = float(re.match('[^\s]+', line).group(0))提取第一部分数据,但无法正确定位第二和第三个数字。

我尝试过/正在尝试long = float(re.match('.*?\s(\S+)\s.*?', line).group(0)),但这会将整个字符串返回到第二个空格。如何在这些字符串中仅定位第二个数字和第三个数字?

1 个答案:

答案 0 :(得分:2)

如果您无法split,那么您可以在开头将数字与可选的-+匹配:

>>> s = '-30.345 foo 150.930 abc 112.356 another .123'
>>> re.findall(r'([+-]?\d*\.?\d+)', s)
['-30.345', '150.930', '112.356', '.123']

RegEx Demo