我正在开发一个简单的正则表达式来解析部分URL,正则表达式必须能够捕获命名组中的部分url,只有少数允许的字符(a-z0-9和 - ),如果其他如果字符存在,则regexp必须对给定字符串失败,并且不会进行捕获。
但正如你在正则表达式中看到的那样,当正则表达式找到%符号时它会停止,然后捕获它前面的部分(如果它长于两个字符),结果是相同的,没有单词边界(\ b)
我无法理解为什么%表示像\ n并且引擎正在捕获先前的字符并且停止%不在允许的字符列表中,因此它应该对该字符串失败...或者不是?
我也尝试过实际的PHP代码,结果非常相似。
编辑1:
实际PHP代码:
Serializable
答案 0 :(得分:3)
你没有说它与整条线相匹配。添加$
以使其与结尾匹配。
^/fixed_url_part/\b(?P<codename>[a-z0-9\-]{2,})\b$
^-- match start of line ^-- match end of line