我感兴趣的是提取一组字符('AA='
)后出现的数字。然而,问题是:(i)我不知道数字是多长,(ii)我不知道在数字之后出现什么(可能是空白或任何字符,除了0-9,考虑到我不知道这些字符可能是什么,但它们绝对不是0—9),(iii)数字可以以指数形式存在(下面的第4/5行)
下面给出的是我能得到的许多输入中的一些
Line 1: 123 NUBA AA=1.2345 $BB=1234.55
Line 2: 123 NUBA MM AA=1.2345678&BB=1234.55
Line 3: 123 NUBA RRNJH AA=1.2#ALPHA
Line 4: 123 NUBA ABCD AA=1.2E-5 GBRO
Line 5: 123 NUBA ABCD AA=1.245E-7$ MN
...
结果应该是:1.2345
{
PS:我知道如何使用.find
并获取AA=
的起始位置,但这对上述条件没有多大帮助。另外,我知道有一种方法可以是在AA=
之后循环每个字符,如果看到空格或除[0-9
、.
、E
、-
]以外的任何内容,则将其打断,但这很笨拙,并且在我的代码中占用了不必要的空间。我正在寻找一个更整洁的方法来做这件事
这将为您提供所需的输出
输出
您可以将单个模式与捕获组一起使用。例如,使用re.findall仅获取捕获组的值
解释
\bAA=
一个单词边界,然后匹配AA=
(
捕获组1\d+
匹配1+个数字(?:\.\d+)?
匹配可选的小数部分(?:[eE][-+]?[0-9]+)?
匹配可选的指数部分)
关闭组1Regex demo
输出
Python demo
相关问题 更多 >
编程相关推荐