判断一个如下类型的逻辑关键词, 是否在文本里面
a and b,
a or b,
a and b and c and d,
a or b or c or d,
(a and b) or (c and d)
(a or b) and (c or d)
and or () 三种运算逻辑,
目前通过 Python 正则和递归实现了一个简单的版本, 基本思路是, 先把逻辑运算解析为 关键词的列表, 然后在判断是否在 文本 里, 例如,
(a and b) or (c and d)
解析为 [(a, b), (c,d)]
a or b or (c and d)
解析为 [(a,), (b,), (c,d)]
然后迭代通过 in 操作来判断
目前代码的状态是 shit but work well, 请问各位大佬, 有好的解决方案吗?
1
lxml 2020-12-18 17:12:50 +08:00 via Android
两周自制脚本语言
|
2
HarveyTvT 2020-12-18 17:23:11 +08:00
grep OR
grep -E 'pattern1|pattern2' filename grep AND grep -E 'pattern1' filename | grep -E 'pattern2' |
4
oott123 2020-12-18 18:33:27 +08:00
|
5
autoxbc 2020-12-18 18:47:59 +08:00
用编程语言原样实现不就好了,为什么还要搞成一个「引擎」?用这个引擎的人还要学一下描述这个引擎输入的 DSL,那直接用高级语言作为 DSL,去掉引擎不好么
|
7
lzxz1234 2020-12-18 19:17:53 +08:00
|
8
black11black 2020-12-18 19:29:19 +08:00 via Android
就一个简单的压栈弹栈问题。。。至于么
|