C++:提取分析数学表达式的符号/变量

2024-01-21

我有用户可以提供的表达式,例如:

 a*sin(w*t) 
 a+b/c
 x^2+y^2/2

我愿意just获取那里的变量列表。我不需要做任何替换。所以,对于第一个公式,它是{a,w,t}。对于第二个{a,b,c},对于最后一个{x,y}.

该表达式主要是为了用 Sympy 进行解析而编写的,但我需要能够获取 C++ 中的变量列表以进行一些检查。我想:

  • 避免将整个 Python 解释器链接到我的程序
  • 避免重新发明轮子,因为我看到有很多可用的解析库,例如muparser,但我不知道其中是否有提供此功能

做到这一点最简单的方法是什么?你会如何解决这个问题?


给定输入:const string input我们可以收集或变量到set<string> with a regex https://stackoverflow.com/a/38595708/2642059:

\b([a-zA-Z]\w*)(?:[^(a-zA-Z0-9_]|$) https://regex101.com/r/0hDJEZ/3

您可以在 C++ 中使用它,如下所示:

const regex re{ "\\b([a-zA-Z]\\w*)(?:[^(a-zA-Z0-9_]|$)" };
const set<string> output{ sregex_token_iterator(cbegin(input), cend(input), re, 1), sregex_token_iterator() };

Live Example http://ideone.com/OLkpJM

EDIT:

regex解释:

  • \b断言一个\W字符或字符串的开头或结尾
  • ([a-zA-Z]捕获以字母字符开头的任何内容
  • \w*)后跟任意数量的“word”字符
  • (?:指定我的非捕获可选匹配的开始
  • [[^(a-zA-Z0-9_] the 1st option is a non-open-parenthesis \W character
  • |$)另一个选项是已到达输入末尾
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++:提取分析数学表达式的符号/变量 的相关文章

  • 如何使用 pybrain 黑盒优化训练神经网络来处理监督数据集?

    我玩了一下 pybrain 了解如何生成具有自定义架构的神经网络 并使用反向传播算法将它们训练为监督数据集 然而 我对优化算法以及任务 学习代理和环境的概念感到困惑 例如 我将如何实现一个神经网络 例如 1 以使用 pybrain 遗传算法
  • 指针减法混乱

    当我们从另一个指针中减去一个指针时 差值不等于它们相距多少字节 而是等于它们相距多少个整数 如果指向整数 为什么这样 这个想法是你指向内存块 06 07 08 09 10 11 mem 18 24 17 53 7 14 data 如果你有i
  • 从 NumPy ndarray 中选择行

    我只想从 a 中选择某些行NumPy http en wikipedia org wiki NumPy基于第二列中的值的数组 例如 此测试数组的第二列包含从 1 到 10 的整数 gt gt gt test numpy array nump
  • 仅第一个加载的 Django 站点有效

    我最近向 stackoverflow 提交了一个问题 标题为使用mod wsgi在apache上多次请求后Django无限加载 https stackoverflow com questions 71705909 django infini
  • 使用特定颜色和抖动在箱形图上绘制数据点

    我有一个plotly graph objects Box图 我显示了箱形 图中的所有点 我需要根据数据的属性为标记着色 如下所示 我还想抖动这些点 下面未显示 Using Box我可以绘制点并抖动它们 但我不认为我可以给它们着色 fig a
  • Github Action 在运行可执行文件时卡住

    我正在尝试设置运行google tests on a C repository using Github Actions正在运行的Windows Latest 构建过程完成 但是当运行测试时 它被卡住并且不执行从生成的可执行文件Visual
  • 如何衡量两个字符串之间的相似度? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 给定两个字符串text1 and text2 public SOMEUSABLERETURNTYPE Compare string t
  • Qt表格小部件,删除行的按钮

    我有一个 QTableWidget 对于所有行 我将一列的 setCellWidget 设置为按钮 我想将此按钮连接到删除该行的函数 我尝试了这段代码 它不起作用 因为如果我只是单击按钮 我不会将当前行设置为按钮的行 ui gt table
  • 如何在 pygtk 中创建新信号

    我创建了一个 python 对象 但我想在它上面发送信号 我让它继承自 gobject GObject 但似乎没有任何方法可以在我的对象上创建新信号 您还可以在类定义中定义信号 class MyGObjectClass gobject GO
  • 在本地网络上运行 Bokeh 服务器

    我有一个简单的 Bokeh 应用程序 名为app py如下 contents of app py from bokeh client import push session from bokeh embed import server do
  • 插入记录后如何从SQL Server获取Identity值

    我在数据库中添加一条记录identity价值 我想在插入后获取身份值 我不想通过存储过程来做到这一点 这是我的代码 SQLString INSERT INTO myTable SQLString Cal1 Cal2 Cal3 Cal4 SQ
  • 控制到达非 void 函数末尾 -wreturn-type

    这是查找四个数字中的最大值的代码 include
  • 如何让Gtk+窗口背景透明?

    我想让 Gtk 窗口的背景透明 以便只有窗口中的小部件可见 我找到了一些教程 http mikehearn wordpress com 2006 03 26 gtk windows with alpha channels https web
  • 将文本叠加在图像背景上并转换为 PDF

    使用 NET 我想以编程方式创建一个 PDF 它仅包含一个背景图像 其上有两个具有不同字体和位置的标签 我已阅读过有关现有 PDF 库的信息 但不知道 如果适用 哪一个对于如此简单的任务来说最简单 有人愿意指导我吗 P D 我不想使用生成的
  • Pandas 每周计算重复值

    我有一个Dataframe包含按周分组的日期和 ID df date id 2022 02 07 1 3 5 4 2022 02 14 2 1 3 2022 02 21 9 10 1 2022 05 16 我想计算每周有多少 id 与上周重
  • 在 JavaScript 函数的 Django 模板中转义字符串参数

    我有一个 JavaScript 函数 它返回一组对象 return Func id name 例如 我在传递包含引号的字符串时遇到问题 Dr Seuss ABC BOOk 是无效语法 I tried name safe 但无济于事 有什么解
  • 为什么我收到“找不到编译动态表达式所需的一种或多种类型。”?

    我有一个已更新的项目 NET 3 5 MVC v2 到 NET 4 0 MVC v3 当我尝试使用或设置时编译出现错误 ViewBag Title财产 找不到编译动态表达式所需的一种或多种类型 您是否缺少对 Microsoft CSharp
  • 限制C#中的并行线程数

    我正在编写一个 C 程序来生成并通过 FTP 上传 50 万个文件 我想并行处理4个文件 因为机器有4个核心 文件生成需要更长的时间 是否可以将以下 Powershell 示例转换为 C 或者是否有更好的框架 例如 C 中的 Actor 框
  • Kivy - 单击按钮时编辑标签

    我希望 Button1 在单击时编辑标签 etykietka 但我不知道如何操作 你有什么想法吗 class Zastepstwa App def build self lista WebOps getList layout BoxLayo
  • 使用随机放置的 NaN 创建示例 numpy 数组

    出于测试目的 我想创建一个M by Nnumpy 数组与c随机放置的 NaN import numpy as np M 10 N 5 c 15 A np random randn M N A mask np nan 我在创建时遇到问题mas

随机推荐

  • 使用 openssl_encrypt 替换 Mcrypt 进行 3DES-ECB 加密

    我有一个使用 mycrypt 的加密方法 密码是3des mode ecb mcrypt module open MCRYPT 3DES ecb 现在我想使用它来加密openssl encrypt 而且我没有找到des3 ecb in op
  • 在 RxJS 中取消订阅主题

    我发现以下构造对我来说有点令人困惑 打字稿中提供的示例 let someSubject Subject
  • 在 MongoDB 中使用 MapReduce 连接两个集合

    我已经知道 MongoDB 不支持连接操作 但我必须模拟一个 lookup 来自聚合框架 mapReduce范例 我的两个收藏是 Employees sample id 1234 first name John last name Bush
  • 如何获取分页的物料数据表页面中只显示的数据

    我需要将当前页面上显示的数据导出为 Excel 或 pdf 那么如何获取只显示在页面上的数据呢 我将整个数据存储在数据源对象中 例如 如果每页有 10 个项目 我需要这 10 个项目 如果我将分页器项目列表更改为 20 那么我需要 20 个
  • Java垃圾收集和图形处理方法

    我正在创建一个游戏 蛇克隆 作为一种爱好 我正在查看 Java API 中 Graphics 类的 dispose 方法 当我注释掉 dispose 方法时 无论有没有它 我的动画都会以相同的方式工作 在 Java API 中 dispos
  • Scala 中“不支持不安全的 HTTP 请求”错误

    尝试运行时出现以下错误sbt run运行我的 Scala 代码 insecure HTTP request is unsupported http repo typesafe com typesafe releases switch to
  • 如何根据用户在文本字段中输入的电子邮件从 Firebase 数据库检索值?

    我正在研究 Firebase 数据库 如何根据用户在文本字段中输入的电子邮件从数据库中检索值 下面是我的数据库结构 请帮忙 这是我的代码 Ref database getReference Registeration Ref orderBy
  • onMeasure() 以 EXACTLY 和规格大小 0 调用

    调试自定义视图覆盖时onMeasure 方法 我看到有几个对此方法的调用 我只处理视图的高度 宽度规格始终保持不变 有时我接到一个关于 高度 MeasureSpec 的电话getMode EXACTLY and getSize 0 This
  • 使用 Symfony 强制使用 HTTPS

    我试图强制所有对 example com checkout 的请求使用 HTTPS 我读了Symfony 文档 http symfony com doc current cookbook security force https html并
  • 是否有不同步的 Java Stack 的直接替代品?

    我有一个使用堆栈数据结构的大型代码库 由我编写 这是为了方便起见 我有时将其用作堆栈 有时将其用作向量 列表 然而 经过性能审查后 我们决定不想为同步安全支付额外费用 我现在需要用非同步结构替换这个结构 并且在代码中多次提到 我很高兴发现
  • golang中资源应该保存在哪里

    我的应用程序使用 json 配置文件和其他资源 我应该将它们放置在项目层次结构中的哪个位置 我找不到答案http golang org doc code html http golang org doc code html 如何编写Go代码
  • Angular.js ui-grid 自定义日期过滤器

    我正在使用角度网格 ui grid 位于ui grid info http ui grid info 我正在尝试制作一个自定义过滤器 它将使用日期输入控件按日期过滤网格 一个用于小于 一个用于大于 我似乎可以在 columnDefs 中使用
  • 动态更改IP地址?

    考虑一下这个案例 我想经常抓取网站 但有一天 限制后我的IP地址被阻止了 那么 如何动态更改我的IP地址或任何其他想法 一种方法使用Scrapy http scrapy org 将使用两个组件 RandomProxy and RotateU
  • 了解oauth 2.0中客户端id、客户端密钥的需求

    我有一个网站 要求用户通过提供电子邮件和密码来登录以获得访问令牌 其中访问令牌令牌用于访问 api 然后 用户可以在访问令牌提供的范围内获得读 写的访问权限 那么 这里我想了解的是 client id 和 client Secret 在这种
  • Automapper、泛型、dto funtimes

    这是交易 我有一个报告设计器 用户可以根据一些预定义的数据集创建报告 他们可以选择要包含在报告中的一组列 然后在运行报告时 通过使用自动映射器将 NHibernate 集合映射到 dto 类集合来创建 IList 这样做的问题是 DTO 集
  • E:软件包“oracle-java8-installer”没有安装候选者

    我尝试使用以下命令安装 java8 sudo add apt repository ppa webupd8team java sudo apt get update sudo apt get install oracle java8 ins
  • React Bootstrap 弹出窗口在外部点击时关闭

    React Bootstrap 提供了一个弹出窗口控件 我希望在单击弹出窗口外部时将其关闭 其方式与模态的工作方式类似 默认情况下点击开箱即用即可将其关闭 有没有办法使用 ReactBootstrap 来做到这一点 或者我需要自定义代码吗
  • SwiftUI – 如何将 NavigationView 的标题设置为大标题(或小标题)?

    使用 SwiftUI 如何更改导航栏的标题大小 在标准标题或大标题之间进行选择 SwiftUI iOS 14 NavigationView TopLevelView navigationBarTitleDisplayMode inline
  • 函数声明与函数定义

    如果我有这个原型 int bar int 对于编译器我是宣告标识符bar 如果我有这样的定义 int bar int a 对于编译器我是defining标识符bar 一般来说 定义会为对象分配存储空间 但是 函数声明也是如此吗 另外在这种情
  • C++:提取分析数学表达式的符号/变量

    我有用户可以提供的表达式 例如 a sin w t a b c x 2 y 2 2 我愿意just获取那里的变量列表 我不需要做任何替换 所以 对于第一个公式 它是 a w t 对于第二个 a b c 对于最后一个 x y 该表达式主要是为