首页 > 解决方案 > 用于匹配数学表达式的正则表达式

问题描述

我目前的任务是验证给定表达式的格式是否正确。前任。“7x^2 + 2x +1”会通过,但“7x72”或格式错误的东西会失败。

试图

\d*x{0,1}(\^\d*){0,1}

它检查函数的每一部分是否存在,系数,可选 x ,可选指数。我只是不确定如何实际格式化它,以便它必须对 +/- 符号之间的每个部分都是正确的,否则该函数无法正确键入。

我该如何解决这个问题?

标签: javaregex

解决方案


尝试这个:

((-?\d+)x\^2\s*[+-]\s*)?(\d+)x\s*([+-]\s*\d+)
  • (-?\d+)x\^2\s*[+-]\s*)?
    • -?\d+- 0 或 1 个-符号后跟一个或多个数字
    • x\^2- x 字符、^ 字符、2 个字符
    • \s*- 可选空间
    • [+-]- + 字符或 - 字符
    • ?- 该组的 0 或 1 个。二次公式可能没有第一部分。删除它?以使其不是可选的
  • (\d+)x- 一个或多个数字后跟 x 字符(例如:2x)
  • \s*- 可选空间
  • ([+-]\s*\d+)
    • [+-] - + 字符或 - 字符
    • \s*- 可选空间
    • \d+- 一位或多位数字(例如:3)

推荐阅读