正则表达式截取指定中文子串

来源:15-2 正则表达式

qq_lcy_7

2020-03-09

老师好,关于正则截取中文字符串中特定子串,不知道如何实现。

比如 有如下一个函数,
//  src 原字符串
//  prefix 起始字符串
//  suffix 结束字符串
func getSubStringByRex(src string,prefix string, suffix string){

            // 对于src字符串(有可能为中文),截取 prefix开始至suffix 中间的字符串内容(开区间)。
            该如何实现

}

网上找了很多方法,尝试了很多都失败了,烦请...过目....

写回答

1回答

ccmouse

2020-03-11

就这个问题本身不推荐使用正则表达式。又有中文,prefix和suffix又是用户输入,里面的坑非常多。可能就算调对了也不能保证有什么奇怪的输入会挂。而且如果prefix和suffix嵌套又怎么处理?我建议还是人肉分别查找prefix和suffix靠谱一些。

实在要用正则表达式,至少用regexp.QuoteMeta来确保传入的参数被转义。我用下面这个正则表达式试了一下,简单的输入输出还是对的。

fmt.Sprintf("(%s.*)%s", regexp.QuoteMeta(prefix), regexp.QuoteMeta(suffix))

0
0

Google资深工程师深度讲解Go语言 由浅入深掌握Go语言

语法+分布式爬虫实战 为转型工程师量身打造

5995 学习 · 1909 问题

查看课程