Python 从正则表达式命令获取数学表达式的特定元素
我想得到数学表达式中的一些模式 这些模式的形式是:“1.e10”或“1.e7”(其中1.e代表10^blabla) 我不仅想识别这些模式,还想让我的算法返回数字(这里是10或7) 所以我试过这个:Python 从正则表达式命令获取数学表达式的特定元素,python,regex,Python,Regex,我想得到数学表达式中的一些模式 这些模式的形式是:“1.e10”或“1.e7”(其中1.e代表10^blabla) 我不仅想识别这些模式,还想让我的算法返回数字(这里是10或7) 所以我试过这个: pattern = re.compile("1.e(\d)*") pattern.search(my expression) 但我不知道如何得到这些数字 有什么帮助吗 提前谢谢你像这样的regx "1\.e(\d*)" 假设要提取指数符号的指数,请尝试以下操
pattern = re.compile("1.e(\d)*")
pattern.search(my expression)
但我不知道如何得到这些数字
有什么帮助吗
提前谢谢你像这样的regx
"1\.e(\d*)"
假设要提取指数符号的指数,请尝试以下操作:
import re
l = ['1.e10', '1.e7', '2.0E+8', '3.58e-5'] # example inputs
for i in l:
m = re.search(r'\d\.\d*[eE]([+-]?\d+)', i)
print(m.group(1)) # print the exponent
输出:
10
7
+8
-5
使用
(?P-?\d+(?:\。\d*))(?:[eE](?P[+-]?\d+))?
看
解释
--------------------------------------------------------------------------------
(组和捕获到\1:
--------------------------------------------------------------------------------
-?“-”(可选(匹配最大金额)
(可能的)
--------------------------------------------------------------------------------
\d+数字(0-9)(1次或多次(匹配
尽可能多的钱)
--------------------------------------------------------------------------------
(?:组,但不捕获(可选)
(匹配尽可能多的金额):
--------------------------------------------------------------------------------
\. '.'
--------------------------------------------------------------------------------
\d*数字(0-9)(0或更多次
(匹配尽可能多的金额)
--------------------------------------------------------------------------------
)?分组结束
--------------------------------------------------------------------------------
)结束\1
--------------------------------------------------------------------------------
(?:组,但不捕获(可选)
(匹配尽可能多的金额):
--------------------------------------------------------------------------------
[eE]任何字符:“e”,“e”
--------------------------------------------------------------------------------
(分组并捕获到\2:
--------------------------------------------------------------------------------
[+-]?以下任意字符:'+','-'(可选)
(匹配尽可能多的金额)
--------------------------------------------------------------------------------
\d+数字(0-9)(1次或多次
(匹配尽可能多的金额)
--------------------------------------------------------------------------------
)结束\2
--------------------------------------------------------------------------------
)? 分组结束
见:
重新导入
测试压力='1.e10,1.e7,2.0E+8,3.58e-5'
matches=re.finditer(r'(?P-?\d+(?:\。\d*))(?:[eE](?P[+-]?\d+))),,test\u str)
打印([m.groupdict()用于匹配中的m])
结果:
[{'main':'1','exponent':'10'},{'main':'1','exponent':'7'},{'main':'2.0','exponent':'+8'},{'main':'3.58','exponent':'-5'}
而这段代码可以回答这个问题,提供关于如何和/或为什么解决这个问题的额外上下文,可以提高答案的长期价值。