当前位置: 首页 > 面试题库 >

正则表达式用于简单的数学方程式

邵宜年
2023-03-14
问题内容

我想识别整数或十进制以及四个简单的操作,分为令牌我无法使十进制起作用,请您帮忙吗?

我的注册表是

expression = "2.7 + 3 * (1 + 2)";
String expRegString = "\\d+(\\.\\d+)*|[\\(\\)\\+\\-\\*\\/]";
Pattern expPattern = Pattern.compile(expRegString);
Matcher expMatcher = expPattern.matcher(expression);

while (expMatcher.find()){
    System.out.println(expMatcher.group());
}

给我 "+", "3", "(" , "1", "+" , "2",")"

编辑:正确的结果将是 "2.7","+", "3", "(" , "1", "+" , "2",")"


问题答案:

您可以尝试删除所有空格,然后在字符之前或之后的每个位置拆分数据- + * / ( )

这应该可以解决问题

String expression = "2.7 + 3 * (1 + 2)";
String[] tokens = expression.replaceAll("\\s+", "").split("(?<=[-+*/()])|(?=[-+*/()])");

for (String token : tokens)
    System.out.println(token);

输出量

2.7
+
3
*
(
1
+
2
)


 类似资料:
  • 问题内容: 我正在尝试使用运算符-+ * /将正则表达式拆分为1.5 + 4.2 *(5 + 2)等式,以便将输出输入到数组中,以便我可以单独解析 我发现可以使用,但是如果我要保留小数点,它将不会拆分。 我已经尝试过分割,但是它不会在小数点上分割 问题答案: 您还可以使用?:避免捕获组。我把它简化了。

  • 我在试着把一个等式字符串分解成令牌。我找到了一个很好的起点'([A-Za-z]+[0-9.]+[&=><\!]+\s)'。但是,这对于负数有问题: 而且还 看起来my regex可以使用一些东西来检查'-'的左边是否有一个数字,如果没有,就用下一个数字保持它(注意'-3'的左边没有任何东西)。可以使用正则表达式完成吗?或者在.NET中有更好的工具将其拆分?

  • 本文向大家介绍java正则表达式的简单运用,包括了java正则表达式的简单运用的使用技巧和注意事项,需要的朋友参考一下 本文为大家分享了如何运用java正则表达式的方法,供大家参考,具体内容如下 1.是否匹配给定的模型 代码如下: 运行结果如下: 2.替换 代码如下: 运行结果如下: 3.去重 代码如下: 运行结果如下: 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程

  • 本文向大家介绍简单高效有用的正则表达式,包括了简单高效有用的正则表达式的使用技巧和注意事项,需要的朋友参考一下 什么是正则表达式? 正则表达式是一组由字母和符号组成的特殊文本,它可以用来从文本中找出满足你想要的格式的句子。 一个正则表达式是一种从左到右匹配主体字符串的模式。 “Regular expression”这个词比较拗口,我们常使用缩写的术语“regex”或“regexp”。正则表达式可以

  • 正则表达式是一系列的字符串。这些包含超过其字面含义的字符串被称之为元字符。例如,一个符号前面的引用符代表一个人的言语能力,或者按照上面的说法,代表着meta-meaning[1]。正则表达式是一组字符串和(或者)一组匹配(特定的)模式的元字符。 一个正则表达式包含下面的一个或多个选项: 一组字符串。这是仅仅表示字面意思的字符串。最简单形式的正则表达式仅仅包含一组字符串。 一个锚字符。锚节点指定了正

  • 主要内容:实例,为什么使用正则表达式?,发展历史,应用领域除非您以前使用过正则表达式,否则您可能不熟悉一些术语。但是,毫无疑问,您已经使用过不涉及脚本的某些正则表达式概念。 例如,您很可能使用 ? 和 * 通配符来查找硬盘上的文件。? 通配符匹配文件名中的 0 个或 1 个字符,而 * 通配符匹配零个或多个字符。像 data(\w)?\.dat 这样的模式将查找下列文件: 使用 * 字符代替 ? 字符扩大了找到的文件的数量。data.*\.dat 匹配下