正则表达式和解析总是重复相同的组

时间:2013-03-06 21:53:09

标签: php regex parsing

有人可以帮我用PHP构建一个正则表达式并解析下面的字符串来实现单独的模块。

某些字符串格式的示例:()=>组

  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)

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

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

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

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

    提前致谢。如果需要,那么我可以发布我现在拥有的内容吗?

    截至目前已有效的答案:'/(!?\(。* *))||||||&& /'

    但是对于下面只有一个没有括号的组的例子,它给了我一个错误:

    1. str1 = A&& B

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

    2. str2 = A || B || ç

      O / P数组= group1(无括号),其中组1 = A || B || ç

1 个答案:

答案 0 :(得分:0)

我不清楚为什么你期待!在你的例子中被删除3.我将假设你实际上意味着那个O / P数组是一个group3。我可以建议您将来显示示例输入的实际输出。无论如何,根据你所提出的,加上我的假设,似乎这可能会做你想要的:

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

其中$str是您的输入格式。