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