c# - 正则表达式的数值表达
问题描述
我需要编写一个由以下 bnf 形式给出的正则表达式:
<expr_num>:=<var>|<sign>|"("<expr_num>")"|<expr_num><operator_num><expr_num>
我的尝试:
var=\w*
sign=+|-
operator_num=[+|-|*|/]
但是,当我输入短语时<expr_num><operator_num><expr_num>
,正则表达式<expr_num>
在一开始就处于无限递归状态。
我的尝试:(?<expr_num>(?<var>(\[(\w+\d*)\]))|(?<sign>([\+|\-]\g<sign>)|(\d*))|(\((\g<expr_num>)\))|(\g<expr_num>[+|*|-|\/]{1}\g<expr_num>))$
错误:recursive call could loop indefinitely
如何解决这个问题呢?如何在 C# 中为此表达式创建解析器?
解决方案
推荐阅读
- reactjs - 使用包裹 js、process.env 构建。
在 netlify 中部署时返回 null - android - 深度链接仅打开一个应用实例?
- python - 如何使用 Python 套接字连接互联网上的两台计算机?
- css - 如何修复影响整行按钮的边距
- event-handling - PowerDesigner - 如何更改列名/代码并通过用户定义的表单存储旧的 - 一种 OnChange 事件
- javascript - 在javascript中返回对象的属性
- azure - 通过VM的终端打开一个Azure VM的端口
- video - FFmpeg:将任何视频转换为边栏模糊的方形 1:1 视频
- sql - 检索与一组商品一起出售的所有订单
- ios - 获取 Cocoapods 自动设置正确的 swift 版本