本文介绍使用 Golang 正则表达式解析路径,提取服务名和方法名。例如将 '/gocloud.api.wms.v1.hello.HelloService/Read' 解析成 'hello.HelloService' 和 'Read',其中 '/gocloud.api.wms.v1' 部分可变。

r := regexp.MustCompile(`^/[^.]+.([^/]+)/([^/]+)$`) 
matches := r.FindStringSubmatch("/gocloud.api.wms.v1.hello.HelloService/Read")
serviceName := matches[1]
methodName := matches[2]

代码解析:

  • regexp.MustCompile() 用于编译正则表达式。
  • ^ 匹配字符串开头。
  • /[^.]+ 匹配第一个斜杠后的内容,直到遇到第一个点。
  • .([^/]+) 匹配第一个点以及后面的内容,直到遇到下一个斜杠,并捕获该内容到第一个匹配组。
  • /([^/]+)$ 匹配第二个斜杠以及后面的内容,直到字符串结尾,并捕获该内容到第二个匹配组。
  • r.FindStringSubmatch() 用于匹配字符串并返回匹配结果。
  • matches[1] 和 matches[2] 分别表示第一个和第二个匹配组捕获的内容。

该正则表达式可以适用于各种类似的路径解析场景,例如:

  • /api.v1.users/get 解析成 users 和 get
  • /service.v2.order/create 解析成 order 和 create

通过正则表达式,您可以轻松地从路径中提取服务名和方法名,方便进行后续的处理。

Golang 正则表达式解析路径提取服务名和方法名

原文地址: https://www.cveoy.top/t/topic/lh2J 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录