有人可以帮我用PHP构建一个正则表达式并解析下面的字符串来实现单独的模块。
某些字符串格式的示例:()=>组
str1 =(A&& B)|| (C || D)&& !(E || F)
O / P数组=(group1,||,group2,&&,group3)
str2 =!(A || B)&& (C || D)&& (E& F)
O / P数组=(group1,&&,group2,&&,group3)
str3 =!(A || B)
O / P数组=(group1)
str4 =(A&& B)
O / P数组=(group1)
str5 =(A || B)
O / P数组=(group1)
str5 =(A&& B)
O / P数组=(group1)
简而言之,这些组可以是任何顺序,或者每组中的数据没有限制。
第1组:( A& B& C&& ...... n)
第2组:(A || B || C || ...... n)
第3组:!(A || B || C || ...... n)
提前致谢。如果需要,那么我可以发布我现在拥有的内容吗?
截至目前已有效的答案:'/(!?\(。* *))||||||&& /'
但是对于下面只有一个没有括号的组的例子,它给了我一个错误:
str1 = A&& B
O / P数组= group1(无括号),其中第1组= A&& B
str2 = A || B || ç
O / P数组= group1(无括号),其中组1 = A || B || ç
答案 0 :(得分:0)
我不清楚为什么你期待!在你的例子中被删除3.我将假设你实际上意味着那个O / P数组是一个group3。我可以建议您将来显示示例输入的实际输出。无论如何,根据你所提出的,加上我的假设,似乎这可能会做你想要的:
preg_match_all('/(!?\\(.*?\\))|\\|\\||&&/', $str, $matches);
其中$str
是您的输入格式。