2011-07-29 9 views
-1

私は範囲を検証する必要があります。 入力は、次の形式である:私は、次の正規表現を使用していRegExはあまりにも貪欲です

string example1 = "anydate between 20100101 ~~ 20100101"; 
string example2 = "anydate between 20100101 and 20100101"; 
string example3 = "docid between 1 ~~ 2"; 

 
\b(\w)*(?<operator>Between|contains)\b(?<prefix>.*).*?(?<OP>~~|and)[ ]?\b(?.*)\b 

ユーザ入力"anydate between 20100101 ~~ 20100101 and test1"は、それが失敗していると、それはtest1までキャプチャします。

20100101まで私の正規表現を貪欲で魅力的にする方法を教えてください。

答えて

0

あなたは必要ないただきましたを推測

anydate\b(?<op>(between|contains))\b(?<first>[0-9]*)\b(?<op2>(~~|and))\b(?<second>[0-9]*) 

編集を試してみたができます

(?<func>\w+)\b(?<op>(between|contains))\b(?<first>\w+)\b(?<op2>(~~|and))\b(?<second>\w+) 
+0

おかげではなく、検索基準は、日付や他のフィールドである可能性があります。私は例として日付を取った。 – Naga

+0

それでは仕様はどういうものですか? – FlyingStreudel

+0

私の質問を編集しました – Naga

関連する問題