首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在php中标记以下infix表达式?

如何在php中标记以下infix表达式?
EN

Stack Overflow用户
提问于 2014-09-05 08:15:25
回答 4查看 169关注 0票数 0

infix表达式:假和真或真和(假或假)

我想要一个包含元素的数组:

假“、”和“、”真“、”或“、”真“、”和“、"(”、“假”、“或”、“假”、“假”或“不”、“真”、“真")

我不能使用空格作为分隔符,因为括号不能与下一个分隔,或者使用空格进行true/false。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-09-05 08:20:20

您可以尝试下面的代码,它使用正的前瞻性和前瞻性,

代码语言:javascript
复制
<?php
$yourstring = "false and true or true and (false or false or not true)";
$regex = '~\s|(?<=\()|(?=\))~';
$splits = preg_split($regex, $yourstring);
print_r($splits);
?>

输出:

代码语言:javascript
复制
Array
(
    [0] => false
    [1] => and
    [2] => true
    [3] => or
    [4] => true
    [5] => and
    [6] => (
    [7] => false
    [8] => or
    [9] => false
    [10] => or
    [11] => not
    [12] => true
    [13] => )
)
票数 0
EN

Stack Overflow用户

发布于 2014-09-05 08:22:37

既然您将其标记为regex,那么我假设您希望使用正则表达式?

这个怎么样?

代码语言:javascript
复制
(false|true|\(|\)|and|or|not)

例如

代码语言:javascript
复制
$input = "false and true or true and (false or false or not true)";
$regex = '/(false|true|\(|\)|and|or|not)/';
preg_match_all($regex, $input, $tokens);
var_dump($tokens);
票数 0
EN

Stack Overflow用户

发布于 2014-09-05 08:23:38

我认为您要做的是构建一个抽象句法树来计算一个布尔表达式。

您可以这样做,图书馆给出了一个语法,给出了抽象树。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25681402

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档