登录
首页 >  Golang >  Go问答

使用正则表达式在字符串中查找并替换特定内容

来源:stackoverflow

时间:2024-03-08 10:15:26 358浏览 收藏

IT行业相对于一般传统行业,发展更新速度更快,一旦停止了学习,很快就会被行业所淘汰。所以我们需要踏踏实实的不断学习,精进自己的技术,尤其是初学者。今天golang学习网给大家整理了《使用正则表达式在字符串中查找并替换特定内容》,聊聊,我们一起来看看吧!

问题内容

我有一些字符串。字符串可能包含方括号之间列出的项目。我想在带括号的字符串中包含恒定数量的额外项目。括号可能为空或不存在。例如:

  • string1 --> string1 # 未添加任何内容
  • string2[] --> string2[extra1="1",extra2="2"] # 添加了两项
  • string3[item="1"] --> string3[item="1",extra1="1",extra2="2"] # 添加了两项

目前我通过以下代码(golang)实现了这一点:

str1 := "test"
str2 := `test[]`
str3 := `test[item1="1"]`
    
re := regexp.mustcompile(`\[(.+)?\]`)

for _, s := range []string{str1, str2, str3} {
    s = re.replaceallstring(s, fmt.sprintf(`[item1="a",item2="b",$1]`))
    fmt.println(s)
}

但是在输出中,如果括号为空,我最后还会得到一个不需要的逗号“,”:

test
test[item1="a",item2="b",]
test[item1="a",item2="b",item1="1"]

如果括号为空,是否可以避免粘贴逗号?

当然,可以再次解析字符串并修剪逗号,但这似乎不是最理想的。

go 演示代码示例


解决方案


package main

import (
    "fmt"
    "regexp"
)

func main() {
    str1 := "test"
    str2 := `test[]`
    str3 := `test[item1="1"]`
    
    re := regexp.MustCompile(`\[(.*)\]`)

    for _, s := range []string{str1, str2, str3} {
       matched,err := regexp.Match(`\[(.+)\]`, []byte(s));
       _ = err;
       if(matched==true){
          s = re.ReplaceAllString(s, fmt.Sprintf(`[item1="a",item2="b",$1]`));
       }else {
          s = re.ReplaceAllString(s, fmt.Sprintf(`[item1="a",item2="b"]`));
       }
       fmt.Println(s)
    }
}

以上就是《使用正则表达式在字符串中查找并替换特定内容》的详细内容,更多关于的资料请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>