全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

如何在 Go 中删除包含指定子字符串的行

本文介绍使用正则表达式在 go 中高效过滤掉包含特定子字符串的整行内容,适用于处理 `[]byte` 或 `string` 类型的多行文本,提供可直接运行的示例代码及关键注意事项。

在 Go 中删除包含指定子字符串的整行(即“过滤掉含关键词的行”),不能像 Ruby 那样直接按行切分再筛选,但可通过正则表达式的多行模式((?m))精准匹配并替换目标行。核心思路是:将每行视为独立上下文,用 ^ 和 $ 锚定行首与行尾,匹配整行中包含目标子串的内容,并将其替换为空字符串

以下是一个完整、健壮的实现示例:

package main

import (
    "fmt"
    "regexp"
)

func removeLinesContaining(s, substr string) string {
    // 构造正则:(?m) 启用多行模式;^.*substr.*$ 匹配整行含 substr 的行;[\r\n]* 适配行尾换行符(含空行)
    pattern := "(?m)^.*" + regexp.QuoteMeta(substr) + ".*$[\r\n]*"
    re := regexp.MustCompile(pattern)
    return re.ReplaceAllString(s, "")
}

func main() {
    s := `aaaaa
bbbb
cc substring ddd
eeee
ffff
g substring h`

    result := removeLinesContaining(s, "substring")
    fmt.Println(result)
}

输出:

aaaaa
bbbb
eeee
ffff

关键要点说明:

  • 使用 (?m) 标志使 ^ 和 $ 同时匹配每行的开头和结尾,而非仅整个字符串首尾;
  • regexp.QuoteMeta(substr) 对子字符串进行转义,防止其含正则元字符(如 ., *, $)导致意外匹配;
  • [\r\n]* 紧跟 $ 后,用于清除被删行所占的换行符,避免残留空行(比仅用 [\r\n]+ 更安全,兼容末尾无换行的场景);
  • 若原始数据为 []byte,可先转换为 string 处理(小数据无性能问题),或使用 regexp.ReplaceAll(b []byte, repl []byte) 方法操作字节切片。

⚠️ 注意事项:

  • 正则方案简洁高效,适合中小规模文本;若需极致性能或处理超大文件(GB 级),建议改用流式逐行读取 + 条件写入;
  • 不要忽略换行符处理——漏掉 [\r\n]* 可能导致相邻行被合并(如 "line1\nline2" → "line1line2");
  • ReplaceAllString 返回新字符串,原内容不可变;如需原地修改 []byte,请使用 ReplaceAll 配合字节切片操作。

综上,该方法准确复现了 Ruby 中 reject { |r| r.include? 'xxx' } 的语义,在 Go 生态中兼具可读性、安全性与实用性。


# go  # 正则表达式  # 字节  # ai  # ruby  # String  # include  # 字符串  # 切片  # regexp  # 关键词  # 换行符  # 是一个  # 过滤掉  # 切分  # 适用于  # 请使用  # 行尾  # 可直接 


相关文章: php json中文编码为null的解决办法  建站VPS选购需注意哪些关键参数?  香港服务器建站指南:外贸独立站搭建与跨境电商配置流程  C++ static_cast和dynamic_cast区别_C++静态转换与动态类型安全转换  装修招标网站设计制作流程,装修招标流程?  已有域名能否直接搭建网站?  建站主机如何选?性能与价格怎样平衡?  c# Task.Yield 的作用是什么 它和Task.Delay(1)有区别吗  怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?  如何在七牛云存储上搭建网站并设置自定义域名?  建站主机核心功能解析:服务器选择与网站搭建流程指南  如何在Golang中实现微服务服务拆分_Golang微服务拆分与接口管理方法  营销式网站制作方案,销售哪个网站招聘效果最好?  详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)  如何选择网络建站服务器?高效建站必看指南  网站网页制作电话怎么打,怎样安装和使用钉钉软件免费打电话?  如何用搬瓦工VPS快速搭建个人网站?  如何通过服务器快速搭建网站?完整步骤解析  如何在景安云服务器上绑定域名并配置虚拟主机?  建站为何优先选择香港服务器?  黑客如何利用漏洞与弱口令入侵网站服务器?  网站专业制作公司,网站编辑是做什么的?好做吗?工作前景如何?  建站主机选哪种环境更利于SEO优化?  如何通过虚拟主机快速搭建个人网站?  制作证书网站有哪些,全国城建培训中心证书查询官网?  兔展官网 在线制作,怎样制作微信请帖?  关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)  东莞市网站制作公司有哪些,东莞找工作用什么网站好?  西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?  赚钱网站制作软件,建一个网站怎样才能赚钱?是如何盈利的?  如何通过商城自助建站源码实现零基础高效建站?  北京专业网站制作设计师招聘,北京白云观官方网站?  成都网站制作价格表,现在成都广电的单独网络宽带有多少的,资费是什么情况呢?  如何撰写建站申请书?关键要点有哪些?  如何基于PHP生成高效IDC网络公司建站源码?  网站制作新手教程,新手建设一个网站需要注意些什么?  网站微信制作软件,如何制作微信链接?  建站ABC备案流程中有哪些关键注意事项?  Avalonia如何实现跨窗口通信 Avalonia窗口间数据传递  建站之星各版本价格是多少?  建站VPS配置与SEO优化指南:关键词排名提升策略  建站主机是什么?如何选择适合的建站主机?  微信小程序制作网站有哪些,微信小程序需要做网站吗?  网站制作大概多少钱一个,做一个平台网站大概多少钱?  ,交易猫的商品怎么发布到网站上去?  微网站制作教程,我微信里的网站怎么才能复制到浏览器里?  宝塔面板如何快速创建新站点?  制作网页的网站有哪些,电脑上怎么做网页?  如何快速搭建响应式可视化网站?  如何快速搭建自助建站会员专属系统? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。