go regexp 正则查询 模糊匹配

思考:想模糊匹配某段文本的关键字?

类似像百度搜索的那种情况
在这里插入图片描述
不清楚是不是通过输入的内容提取关键字 然后在进行搜索

所以下面写了一个简单的demo


package main

import (
	"fmt"
	"regexp"
	"strings"
)

func main()  {
	// 检验文本
	text := `今天的天气非常的good,很适合爱学习的同学,好日子,好天气,适合学习。`
	// 输入的关键字
	keyword := "爱学习"
	str := ""
	for i, r := range []rune(keyword) {
		if i != 0 {
			str = str + ".*" + string(r)
		} else {
			str = str + string(r)
		}
	}
	re, _ := regexp.Compile(str)
	res := re.FindAllStringSubmatchIndex(text,-1)
	tempStr := ""
	// 拆剪字符串
	for i, ints := range res {
		if i == 0 {
			tempStr = tempStr + text[:ints[0]] + ReplaceText(keyword,text[ints[0]:ints[1]])
			if i == len(res) - 1{
				tempStr = tempStr + text[ints[1]:]
			}
		} else if i == len(res) -1 {
			tempStr = tempStr + ReplaceText(keyword,text[ints[0]:ints[1]]) + text[ints[1]:]
		} else {
			tempStr = tempStr + ReplaceText(keyword,text[ints[0]:ints[1]])
		}
	}
	fmt.Println(tempStr)
}

// 标记文本
func ReplaceText(keyword, temp string) string {
	for _, r := range []rune(keyword) {
		temp = strings.Replace(temp,string(r),fmt.Sprintf("<span style=\"color:red;\">%s</span>",string(r)),1)
	}
	return temp
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值