正则表达式:消除斜杠之间的所有数字

regex: eliminate all numbers between slashes

预计:http://some_url.com/api/v1/1/2/3/4" -> http://some_url.com/api/v1/*/*/*/*/ 我用的是什么:

re.sub(r"/\d+/?", "/*/", str(url), flags=re.IGNORECASE)

实际:http://some_url.com/api/v1/*/2/*/4/

您可以使用

/\d+(?=/|$)
/\d+(?![^/])

并替换为 /*。见 regex demo.

在Python中:

url = re.sub(r"/\d+(?=/|$)", "/*", url)

详情

  • / - 一个 / 字符
  • \d+ - 1+ 位数
  • (?![^/]) - 如果下一个字符不是 / 以外的字符(因此,字符串结尾或 / 立即需要当前位置的右侧,与正 (?=/|$) 前瞻相同)

Python demo online:

import re
url = 'http://some_url.com/api/v1/1/2/3/4'
url = re.sub(r"/\d+(?=/|$)", "/*", url)
print(url)
# => http://some_url.com/api/v1/*/*/*/*

你可以使用

/\d+(?=/|$)

a demo on regex101.com