You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何构建正则表达式替换HTTP动词前的所有内容?

Go正则表达式替换HTTP动词前内容的正确方案

问题分析

你当前的正则是直接匹配HTTP动词并替换为空,导致动词被删除,出现//的错误结果。正确思路是匹配从字符串开头到第一个HTTP动词之前的所有内容,再将这部分替换为hello/。

正确正则表达式与代码实现

使用正向预查定位HTTP动词,确保只替换动词之前的部分,保留动词及后续内容:

package main

import (
	"fmt"
	"regexp"
)

func main() {
	inputStrs := []string{
		"foo/bar/GET/v1/fuzz",
		"foo/PUT/fuzz",
		"foo/bar/POST/v1/fuzz/bar",
	}
	// 正则解释:
	// ^:匹配字符串起始位置
	// .*?:非贪婪匹配任意字符,直到满足后续预查条件
	// (?=(HTTP_VERBS)/):正向预查,确保后续紧跟指定HTTP动词和斜杠(这部分不参与替换)
	re := regexp.MustCompile(`^.*?(?=(GET|HEAD|POST|PUT|PATCH|DELETE|CONNECT|OPTIONS|TRACE)/)`)

	for _, str := range inputStrs {
		result := re.ReplaceAllString(str, "hello/")
		fmt.Println(result)
	}
}

运行结果

hello/GET/v1/fuzz
hello/PUT/fuzz
hello/POST/v1/fuzz/bar

关键说明

  • 使用.*?非贪婪匹配,避免过度匹配到后续内容(比如字符串中存在多个HTTP动词时,确保只替换第一个动词前的部分)
  • 正向预查(?=...)不会将HTTP动词纳入匹配范围,因此替换后动词会被完整保留

内容的提问来源于stack exchange,提问作者akko

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 19:39:59