全网整合营销服务商

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

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

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

本文介绍在 go 中高效过滤掉包含指定子字符串的文本行,通过正则表达式实现类似 ruby `reject { |r| r.include? 'substring' }` 的语义,并兼顾跨平台换行符(`\n`/`\r\n`)和边界匹配准确性。

在 Go 中处理文本行过滤时,由于标准库不提供类似 Ruby 的链式 split → reject → join 高阶操作,需结合 strings 包或正则表达式手动实现。最简洁、鲁棒的方式是使用 regexp 包配合多行模式((?m)),精准匹配整行并移除。

以下是一个完整可运行的示例:

package main

import (
    "fmt"
    "regexp"
)

func removeLinesContaining(s, substr string) string {
    // 构造正则:多行模式下,匹配以任意换行符开头(可选)、包含 substr 的整行(含其后的换行符)
    // 使用 [\r\n]+ 适配 \n 和 \r\n;^ 和 $ 在 (?m) 下匹配行首/行尾
    pattern := "(?m)^.*" + regexp.QuoteMeta(substr) + ".*$[\r\n]*"
    re := regexp.MustCompile(pattern)
    return re.ReplaceAllString(s, "")
}

func main() {
    input := `aaaaa
bbbb
cc substring ddd
eeee
ffff
ggg\r\nhh substring ii\r\njjj`

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

输出:

aaaaa
bbbb
eeee
ffff
ggg
jjj

关键要点说明:

  • (?m) 启用多行模式,使 ^ 和 $ 分别匹配每行开头与结尾(而不仅是整个字符串首尾);
  • [\r\n]* 匹配行尾换行符(支持 \n、\r\n 或孤立 \r),* 确保末尾无换行符的行也能被正确清理;
  • regexp.QuoteMeta(substr) 对子字符串进行转义,防止其中含正则元字符(如 .、*、[)导致意外匹配;
  • 若输入为 []byte,可改用 re.ReplaceAll(s, []byte("")),避免字符串与字节切片间反复转换。

⚠️ 注意事项:

  • 正则方式简洁,但对超大文本(GB 级)可能存在性能开销;此时建议逐行扫描(strings.Split + strings.Contains + strings.Join),内存可控且逻辑更直观;
  • 若需保留原始换行符一致性(如统一转为 \n),可在最后调用 strings.ReplaceAll(result, "\r\n", "\n")。

综上,正则方案适合中小规模文本、追求代码简洁性;流式逐行处理更适合大数据量或严格内存控制场景。两者皆可封装为通用函数,按需选用。


# go  # 正则表达式  # 大数据  # 字节  # ai  # 标准库  # ruby  # 封装  # include  # 字符串  # 切片  # regexp  # 换行符  # 链式  # 是一个  # 也能  # 而不  # 可在  # 行尾  # 仅是  # 可选 


相关文章: 济南网站建设制作公司,室内设计网站一般都有哪些功能?  招商网站制作流程,网站招商广告语?  如何选择高效可靠的多用户建站源码资源?  建站之星24小时客服电话如何获取?  公司网站设计制作厂家,怎么创建自己的一个网站?  子杰智能建站系统|零代码开发与AI生成SEO优化指南  韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐  网站制作员失业,怎样查看自己网站的注册者?  企业宣传片制作网站有哪些,传媒公司怎么找企业宣传片项目?  如何快速生成橙子建站落地页链接?  建站ABC备案流程中有哪些关键注意事项?  如何高效完成独享虚拟主机建站?  如何零基础开发自助建站系统?完整教程解析  北京营销型网站制作公司,可以用python做一个营销推广网站吗?  音响网站制作视频教程,隆霸音响官方网站?  在线ppt制作网站有哪些软件,如何把网页的内容做成ppt?  为什么Go需要go mod文件_Go go mod文件作用说明  如何快速搭建高效WAP手机网站?  建站VPS推荐:2025年高性能服务器配置指南  开源网站制作软件,开源网站什么意思?  如何在建站主机中优化服务器配置?  建站中国官网:模板定制+SEO优化+建站流程一站式指南  如何在阿里云完成域名注册与建站?  如何通过NAT技术实现内网高效建站?  建站主机助手选型指南:2025年热门推荐与高效部署技巧  微信小程序 input输入框控件详解及实例(多种示例)  关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)  建站之星后台管理:高效配置与模板优化提升用户体验  建站之星后台搭建步骤解析:模板选择与产品管理实操指南  浅谈Javascript中的Label语句  如何通过多用户协作模板快速搭建高效企业网站?  浅析上传头像示例及其注意事项  如何快速搭建安全的FTP站点?  上海制作企业网站有哪些,上海有哪些网站可以让企业免费发布招聘信息?  css网站制作参考文献有哪些,易聊怎么注册?  建站之星安装步骤有哪些常见问题?  如何续费美橙建站之星域名及服务?  制作假网页,招聘网的薪资待遇,会有靠谱的吗?一面试又各种折扣?  C#怎么使用委托和事件 C# delegate与event编程方法  大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?  如何有效防御Web建站篡改攻击?  建站之星如何修改网站生成路径?  如何快速上传自定义模板至建站之星?  如何通过服务器快速搭建网站?完整步骤解析  c++怎么实现高并发下的无锁队列_c++ std::atomic原子变量与CAS操作【详解】  Thinkphp 中 distinct 的用法解析  Swift中循环语句中的转移语句 break 和 continue  免费制作小说封面的网站有哪些,怎么接网站批量的封面单?  c++怎么编写动态链接库dll_c++ __declspec(dllexport)导出与调用【方法】  如何在阿里云香港服务器快速搭建网站? 

您的项目需求

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