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
?
你可以试试
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+)