Skip to main content
 首页 » 编程设计

python之具有特定字符数的字符串的正则表达式

2025年05月04日39myhome

使用 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-/ 字符串
  • [^/]+ 匹配路径的最后一个组成部分
  • /?$ 匹配最后的选项 /