2011-07-29 122 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