Golang 正则表达式解析路径提取服务名和方法名
本文介绍使用 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
通过正则表达式,您可以轻松地从路径中提取服务名和方法名,方便进行后续的处理。
原文地址: https://www.cveoy.top/t/topic/lh2J 著作权归作者所有。请勿转载和采集!