使用 Scrapy 选择器(https://doc.scrapy.org/en/latest/topics/selectors.html#regular-expressions),我试图选择具有 href 属性的网页元素,该属性具有特定数量的正斜杠,例如,/foo/ 或 /foo/bar/(也始终以 / 开头和结尾)。
到目前为止,为了匹配像 /foo/bar/ 这样的相对 URL,我想出了
In [24]: re.match('^/[^/]+/[^/]+/$', '/foo/bar/')
Out[24]: <_sre.SRE_Match object; span=(0, 9), match='/foo/bar/'>
但是,对越来越多的斜杠(例如 /foo/bar/bam/)重复此操作对我来说似乎不必要地冗长。是否有更简洁的方法将字符串与 给定 数量(不是任意数量)的斜杠相匹配?
请您参考如下方法:
您可以使用此正则表达式来匹配由 / 分隔的任意数量的子目录:
^(?:/[^/]+)*[^/]+/?$
^- 开始(?:/[^/]+)*匹配 0 个或多个/后跟一个或多个non-/字符串[^/]+匹配路径的最后一个组成部分/?$匹配最后的选项/
