RegEx太贪婪了

本文关键字:贪婪 RegEx | 更新日期: 2023-09-27 18:04:04

我需要验证一个范围。输入格式如下:

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

我使用以下正则表达式:

<>之前' b (' w) * (& lt; operator> |之间包含)' b (? & lt; prefix>;.*).*?(?& lt; OP>~ ~ |) [] ? ' b (? *) ' b之前

当用户输入"anydate between 20100101 ~~ 20100101 and test1"时,它失败,直到test1才捕获。

如何使我的正则表达式不那么贪婪,只捕获到20100101 ?

RegEx太贪婪了

你可以试试

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

edit猜测需要什么但是:

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