通八洲科技

如何使用 Go 正则表达式提取引号内内容并移除 @en 及其后的部分

日期:2025-12-30 00:00 / 作者:聖光之護

本文介绍在 go 中使用预编译正则表达式高效处理形如 `"abraham lincoln" @en` 的字符串,精准提取引号内文本并清除 `@en` 及其后内容,兼顾性能与可读性。

在 Go 语言中,若需从带引号且附带语言标签(如 @en)的字符串中提取纯文本内容,推荐使用预编译的正则表达式(regexp.MustCompile),它在多次匹配场景下性能更优、代码更健壮。

以下是一个简洁可靠的实现:

package main

import (
    "fmt"
    "regexp"
)

func main() {
    s := `"Abraham Lincoln" @en`
    // 预编译正则:匹配双引号包裹的非引号内容,后接可选空格及 "@en"
    reg := regexp.MustCompile(`"([^"]*)" *@en`)
    result := reg.ReplaceAllString(s, "${1}")
    fmt.Println(result) // 输出:Abraham Lincoln
}

正则说明

⚠️ 注意事项

? 进阶提示
如需支持多语言标签(如 @zh, @fr),可将 en 泛化为 \w+:

reg := regexp.MustCompile(`"([^"]*)"\s*@(\w+)`)
// 使用 ReplaceAllStringFunc + 自定义逻辑,或直接用 FindStringSubmatch 提取捕获组

综上,预编译正则 + 精确捕获组是 Go 中处理此类结构化字符串提取任务的最佳实践——简洁、高效、易于维护。