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

使用正则表达式拆分简单的数学表达式

周锐
2023-03-14
问题内容

我正在尝试使用运算符-+ * /将正则表达式拆分为1.5 + 4.2 *(5 + 2)等式,以便将输出输入到数组中,以便我可以单独解析

[0]1.5
[1]+
[2]4.2
[3]*
[4](
[5]5
[6]+
[7]2
[8])

我发现\b可以使用,1+2+3但是如果我要保留小数点,它将不会拆分。

我已经尝试过分割,\b(\.\d{1,2})但是它不会在小数点上分割


问题答案:
Pattern pattern = Pattern.compile("((\\d*\\.\\d+)|(\\d+)|([\\+\\-\\*/\\(\\)]))");
Matcher m = pattern.matcher("1.5+4.2*(5+2)/10-4");
while(m.find()) {
    System.out.printf("%s ", m.group());
}

output: 1.5 + 4.2 * ( 5 + 2 ) / 10 - 4

您还可以使用?:避免捕获组。我把它简化了。



 类似资料:
  • 问题内容: 我想解决这个问题。 逗号:分割条款 双引号:字符串值(忽略特殊字符) 数组 例如: 输入: 预期输出: 但是我无法获得超越结果。 我写了下面的代码: 我的输出是: 我需要更改以获得预期的输出?我应该坚持使用正则表达式还是其他解决方案更灵活,更易于维护? 问题答案: 这个正则表达式可以达到目的: 它的工作原理是在逗号后添加一个用于匹配成对的方括号的预读-如果您 位于 方括号内,那么您当然

  • 问题内容: 我想识别整数或十进制以及四个简单的操作,分为令牌我无法使十进制起作用,请您帮忙吗? 我的注册表是 给我 编辑:正确的结果将是 问题答案: 您可以尝试删除所有空格,然后在字符之前或之后的每个位置拆分数据 。 这应该可以解决问题 输出量

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

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

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

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