Python:使用正则表达式选择一组数字

时间:2021-07-09 17:13:36

标签: regex

我有几个文件试图提取第二组数字:

长度 1.2345 +- 0.765

我正在尝试提取 0.765 或数字。

我尝试了很多正则表达式组合。我要么提取 1.2345 +- 0.765 要么什么也不提取。

有什么建议吗? 谢谢, 戴夫

2 个答案:

答案 0 :(得分:0)

您可以找到一组数字或。在第一组数字或 .. 之后出现,并使用正则表达式捕获组。请参阅 regex101.com 以测试您的正则表达式。例如,这里有一种方法可以找到以下模式:没有数字 0 次或多次,然后数字或小数点 1 次或多次,然后没有数字或小数点,然后是第二个数字:

text = 'Length 1.2345 +- 0.765'
number2 = re.sub('[^0-9\.]{0,}[0-9\.]{1,}[^0-9\.]{1,}([0-9\.])', r'\1', text)
print(number2)
# 0.765

答案 1 :(得分:0)

这是另一个正则表达式。

{-# LANGUAGE EmptyCase #-}
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE TypeOperators #-}

import Data.Void
import Data.Type.Equality

foo :: (a :~: b -> Void) -> a -> b -> Int
foo _ _ _ = 0

fooUseGood :: Int
fooUseGood = foo (\case) True () -- accepted, no warning

fooUseBad :: Int
fooUseBad = foo (\case) () () -- warning: Patterns not matched: Refl
  1. 第一个捕获组 (\d*.?\d+) \d 匹配一个数字(相当于 [0-9])
    • 在零次和无限次之间匹配前一个令牌,尽可能多次,根据需要返回(贪婪) .匹配字符。字面意思(区分大小写) ?匹配0到1次之间的前一个令牌,尽可能多次,根据需要返回(贪婪) \d 匹配一个数字(相当于 [0-9])
  • 在一次和无限次之间匹配前一个令牌,尽可能多次,根据需要返回(贪婪)

这是 regex101 https://regex101.com/r/VV6prY/1

相关问题