Php 用于始终重复同一组的Regex和parse

Php 用于始终重复同一组的Regex和parse,php,regex,parsing,Php,Regex,Parsing,有人能帮我在PHP中构建一个正则表达式并解析下面的字符串来实现单个模块吗 某些字符串格式的示例:()=>组 str1=(A和B)| | | | | D)&!(E | | F) O/p数组=(组1、| |、组2和组3) str2=!(A | B)和&(C | D)和&(E&F) O/p数组=(组1、组2、组3) str3=!(A | | B) O/p数组=(组1) str4=(A和B) O/p数组=(组1) str5=(A | | B) O/p数组=(组1) str5=(A和B) O/p数组=(组

有人能帮我在PHP中构建一个正则表达式并解析下面的字符串来实现单个模块吗

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

  • str1=(A和B)| | | | | D)&!(E | | F)

    O/p数组=(组1、| |、组2和组3)

  • str2=!(A | B)和&(C | D)和&(E&F)

    O/p数组=(组1、组2、组3)

  • str3=!(A | | B)

    O/p数组=(组1)

  • str4=(A和B)

    O/p数组=(组1)

  • str5=(A | | B)

    O/p数组=(组1)

  • str5=(A和B)

    O/p数组=(组1)

  • 简言之,这些组可以是任意顺序的,或者每个组中的数据没有限制

    第一组:(A&B&C&n)

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

    第三组:!(A | | B | | C | | n)

    提前谢谢。如果需要的话,我可以张贴我现在有什么

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

    但这给了我以下示例的一个错误,其中只有一个组没有括号:

  • str1=A&B

    O/p数组=组1(无括号),其中组1=A和B

  • str2=A | | B | C

    O/p数组=组1(无括号),其中组1=A | | B | C


  • 我不明白你为什么期待这一切!要在示例3中删除。我假设您实际上是指O/P数组,该数组是group3。我可以建议将来,您为示例输入显示实际输出。无论如何,根据你所说的,再加上我的假设,这似乎可以满足你的要求:

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

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

    是的,您应该始终发布相关的尝试,否则这个问题可能会很快解决。通常,正则表达式只能描述。您的语言不是常规的,但是。因此您可能需要编写自己的解析器。使用正则表达式嵌套疯狂(它验证输入,因此比正常情况下更长),只是为了证明这是可能的,但不推荐使用:我现在的解决方案是:'/^(\w+(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\/(&&&&&\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\。我很抱歉,但我忘了提到另一个条件,我的代码目前正在中断。如果您能补充一下,我将不胜感激。在我的问题中我附加了更多的条件。你不能在没有条件的情况下加上括号吗?我这样做了。。如果根本没有像str1=A | | B或str2=A | | B&&C这样的括号,这将起作用。。。但对于str1=(A | |(B)和&C)则不是这样,因为regex总是在每个组周围寻找一些括号,但这种情况不属于任何记录的条件。请你把你想做的事情弄清楚,然后把整个问题重新问一遍。我宁愿解决它一次,也不愿浪费时间解决一件事,结果你不断地移动球门柱。我完全错过了那种情况。我的道歉。这就是我一直在寻找的整体状况。当我真正开始工作的时候,我意识到了这一点。在发布这个问题之前,我已经列出了所有的条件,但我的错是,我错过了最后一个。我应该说,您的代码在我所寻找的所有其他条件下都能顺利工作。非常感谢。