当我遇到match.find()时,我无法区分两个模板。
String template1 = "GET /boards/(.+?)";
String template2 = "GET /boards/(.+?)/lists";
给出以下输入时:" GET / boards / boardName / lists" ,它与第一个模板而不是第二个模板匹配。我做错了什么?
提前致谢
答案 0 :(得分:1)
由于那个(.+?)
将匹配长度为1或更长的每个字符组合,这将使您的正则表达式引擎与以下部分匹配:
boardName/lists
另请注意,如果您首先尝试以下正则表达式:
GET /boards/(.+?)/lists
它也将匹配字符串,但不同之处在于,在此正则表达式中,组1将包含boardName
,但在第一个组中,组1将为b
(因为{{1}这使得?
成为一种无贪婪的模式。)
如果您希望第一个正则表达式与您的字符串不匹配,则可以使用negative look ahead和negated character class来匹配未跟随字.+
的字符串:
list