javascript - 使用正则表达式解析 bool 算术,包括括号?

标签 javascript python regex

是否有一个正则表达式可以解析表示简单 bool 算术的字符串(在 Python 和/或 Javascript 中,不需要是相同的表达式)?例如我想解析这个字符串:

a and (b and c) and d or e and (f or g)

假设:
* 括号不嵌套
* 术语 a, b, ..., z 不是子表达式

生成的捕获应首先按括号分组,然后我使用相同或更简单的正则表达式再次解析。

我已经成功地编写了一个朴素的正则表达式来解析不带括号的 bool 算术。

有什么想法吗?

最佳答案

通常您会使用例如 recursive descent parser对于此任务,但您可以使用正则表达式获取所有部分(标记):

x = 'a and (b and c) and d or e and (f or g)'
import re

matches = re.findall(r'\(.*?\)|\w+', x)
print ','.join(matches)

运营商通常有不同的precedence .括号将首先被评估,然后是 表达式,最后是 表达式,在优先级相同的情况下从左到右的顺序。你说你想先返回括号匹配,但实际上你通常会做的是使用这些部分构建一个表达式树并递归地计算它。

关于javascript - 使用正则表达式解析 bool 算术,包括括号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2118261/

相关文章:

javascript - jQuery 和 Restful Web 服务安全

javascript - Ajax Post发送HashMap时返回值顺序发生变化

javascript - 如何清除 HTML5 canvas 中的圆弧或圆?

javascript - 'if' 语句内的变量声明

java - Jython jlist 文本未显示在 JFrame 中

Python- Selenium : Scraping AngularJS elements with loop over find_elements_by()

javascript - 这个正则表达式会很慢吗?有什么办法可以优化吗?

java - 使用正则表达式 (Java) 将字符串拆分为 key=value 组

python - 创建 matplotlib PolyCollection 颜色图,将每个单元格映射到一种颜色

ruby - 如何在 "."上拆分,但前提是后面有非数字?