2016-07-19 7 views
1

私のプロジェクトの一部にregexを使用する必要があります。私は、与えられた入力からAND、OR演算子を分離したい。しかし、私はカッコ内に位置する演算子は必要ありません。正規表現とカッコとを別々にするための正規表現C#

例入力:C1 OR [C2およびC3]及びC4またはC5および[C6およびC7またはC8] OR C9

出力:OR AND OR AND OR

その他の例入力:C1 AND C2 AND [C3またはC4]及びC5

出力:AND AND AND

+4

を、どのようなあなたは 'のような深くネストされた括弧のグループを持っている場合はそれが宿題 – BugFinder

+0

ように聞こえる..てみました((((a AND b)OR c)AND d)OR e)AND f''あなたは頭痛があり、地獄を正規表現する傾向があります。だからあなたは正規表現を避けることができる場合は、[抽象構文木](https://en.wikipedia.org/wiki/Abstract_syntax_tree)の使用を考慮すると、有限状態マシンを使用して括弧グループの開閉状態と再帰アルゴリズムを追跡することができます文字列をツリーに解析します。 –

+0

正規表現を使用する必要があります。私はメソッドを分割しようとしましたが、私の問題を解決しませんでした。また、私は正規表現をしようとしたが、私はどの括弧とそのインクルードを分けることができない。 –

答えて

0

あなたはこのようにそれを行うことができます括弧入れ子に持っていけない場合:あなたは正規表現を使用「しなければならない」のであれば

using System; 
using System.Linq; 
using System.Text.RegularExpressions; 

namespace Example 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      var input = "1 OR[C2 AND C3] AND C4 OR C5 AND[C6 AND C7 OR C8] OR C9"; 
      var filtered = Regex.Replace(input, "\\[.*?\\]", string.Empty); 
      var result = filtered.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries).Where(element => element == "OR" || element == "AND"); 
      Console.WriteLine(string.Join(", ", result)); 
      Console.ReadKey(); 
     } 
    } 
} 
+0

そのように私の問題を解決しました。ありがとう.. –