-1

有人可以帮助我在 PHP 中构建一个正则表达式并解析以下字符串以实现单个模块。

一些字符串格式的例子: ( ) => group

  1. str1 = ( A && B ) || ( C || D ) && !( E || F )

    O/P 数组 = ( group1, || , group2, && , group3)

  2. str2 = !( A || B ) && ( C || D ) && ( E && F )

    O/P 数组 = ( group1, && , group2, && , group3)

  3. str3 = !( A || B )

    O/P 数组 = ( group1)

  4. str4 = ( A && B )

    O/P 数组 = ( group1)

  5. str5 = ( A || B )

    O/P 数组 = ( group1)

  6. str5 = ( A && B )

    O/P 数组 = ( group1)

简而言之,这些组可以是任何顺序,或者每个组内的数据没有限制。

第 1 组 : ( A && B && C &&......n )

第 2 组 : ( A || B || C ||......n )

第 3 组:!( A || B || C ||......n )

提前致谢。如果需要,我可以发布我现在拥有的东西吗?

到目前为止有效的答案:'/(!?\(.*?\))|\|\||&&/'

但是对于以下示例,它给了我一个错误,其中只有一组没有括号:

  1. str1 = A && B

    O/P 数组 = group1(无括号)其中 group 1 = A && B

  2. str2 = A || 乙 || C

    O/P 数组 = group1(无括号)其中 group 1 = A || 乙 || C

4

1 回答 1

0

我不清楚你为什么期待!要在您的示例 3 中删除。我将假设您实际上是指 O/P 数组,因为该数组是 group3。我可以建议您在将来显示示例输入的实际输出。无论如何,根据您提出的内容以及我的假设,这似乎可以满足您的要求:

preg_match_all('/(!?\\(.*?\\))|\\|\\||&&/', $str, $matches);

$str您的输入格式在哪里。

于 2013-03-06T22:41:57.180 回答