-1

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)

つまり、これらのグループは任意の順序にすることができ、各グループ内のデータに制限はありません。

グループ 1 : ( A && B && C &&......n )

グループ 2 : ( A || B || C ||......n )

グループ 3: !( A || B || C ||......n )

前もって感謝します。必要に応じて、今持っているものを投稿できますか?

今のところうまくいった答え: '/(!?\(.*?\))|\|\||&&/'

しかし、以下の例では、括弧のないグループが 1 つしかない場合にエラーが発生します。

  1. str1 = A && B

    O/P 配列 = グループ 1 (括弧なし) グループ 1 = A && B

  2. str2 = A || ビ || ハ

    O/P 配列 = グループ 1 (括弧なし) グループ 1 = A || ビ || ハ

4

1 に答える 1

0

! を期待する理由がよくわかりません。あなたの例では削除されます 3.実際には、その O/P 配列がグループになることを意味していたと想定します3. 将来、入力例の実際の出力を表示することを提案できますか。とにかく、あなたが入れたものと私の仮定に基づいて、これはあなたが望むことをするかもしれません:

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

入力形式はどこ$strですか。

于 2013-03-06T22:41:57.180 に答える