当我单击数学方程式相机的照片时。MathpixAPI给出这样的响应:
“ \ left。\ beginarray l 2 x + 3 y + 3 z = 8 \ 3 x + y + 2 z = 10 \ 8 x + 9 x + 10 z = 12 \ endarray \ right。”
我想使用模式匹配或最佳解决方案从此字符串(API的响应)中获得三个方程式,以便从Edittext计算出来。
答案 0 :(得分:1)
假设您的字符串的语法准确度为100%,我将提供以下解决方案:
\\\\left\\.\\s+\\\\beginarray\\s+l\\s+([\\d\\s\\+=\\-*\\/%^x-z]+)\\s+\\\\\\s+([\\d\\s\\+=\\-*\\/%^x-z]+)\\s+\\\\\\s+([\\d\\s\\+=\\-*\\/%^x-z]+)\\s+\\\\endarray\\s+\\\\right\\.
使用此正则表达式模式,您将收到以下字符串
Group1 == "2 x + 3 y + 3 z = 8"
Group2 == "3 x + y + 2 z = 10"
Group3 == "8 x + 9 x + 10 z = 12"
请注意,这已经是Java字符串。纯“正则表达式”是
\\left\.\s+\\beginarray\s+l\s+([\d\s\+=\-*\/%^x-z]+)\s+\\\s+([\d\s\+=\-*\/%^x-z]+)\s+\\\s+([\d\s\+=\-*\/%^x-z]+)\s+\\endarray\s+\\right\.
此外,这将匹配您的字符串和包含的(3)公式,但是如果您更改数字,它将不再起作用。还有很多其他事情可能会打破这一点。 看起来有点像您的语法应该描述一棵树:
left
beginarray
[formula]+
endarray
right
假设这只是更大语法的一部分,并且元素之间可能还有其他内容(例如另一个数组),那么您需要的不仅仅是正则表达式。您需要定义一个语法并进行分析。