依据正则表达式拦截文本

正则表达式匹配

因为我是go语言,所以展示golang的

包:"github.com/dlclark/regexp2"

更多欢迎访问:www.zpf0000.com

// CanMatchRegexp return bool 某个字符串是否匹配正则表达式
func CanMatchRegexp(message string, regexpStr string) bool {re, err := regexp.Compile(regexpStr)if err != nil {logger.Error("CanMatchRegexp regexpStr error: ", err)return false}return re.MatchString(message)
}// CanMatchStringInRegexes return bool 某个字符串是否匹配切片中的任意一个正则表达式
func CanMatchStringInRegexes(message []byte, regexpStrings []string) bool {if len(regexpStrings) == 0 || message == nil {return true}for _, regexpStr := range regexpStrings {regexpStr1, err := strconv.Unquote(strings.Replace(strconv.Quote(regexpStr), `\\u`, `\u`, -1))if err != nil {logger.Error("CanMatchStringInRegexes regexpStrings error: ", err)} else {regexpStr = regexpStr1}logger.Info(fmt.Sprintf("message is %s, regexp is %s", string(message), regexpStr))if CanMatchRegexp(string(message), regexpStr) {return true}}return false
}// WildCardMatch 通配符匹配
func WildCardMatch(pattern string, value string) bool {result, _ := regexp.MatchString(wildCardToRegexp(pattern), value)return result
}// 通配符转换
func wildCardFullToRegexp(pattern string) string {tempArr := strings.Split(pattern, "*")for i, literal := range tempArr {tempArr[i] = regexp.QuoteMeta(literal)}return strings.Join(tempArr, ".*")
}// RemoveHyperlink 提取超链接中的url
func RemoveHyperlink(hyperlink string) string {re := regexp.MustCompile(`<a[^>]+href=["']([^"']+)["'][^>]*>.*?</a>`)match := re.FindStringSubmatch(hyperlink)if len(match) > 1 {return strings.Replace(hyperlink, match[0], "", -1)}return hyperlink
}// Regexp2FindAllString Regex2包,返回所以能匹配正则的字符串
func Regexp2FindAllString(re *regexp2.Regexp, s string) []string {var matches []stringm, _ := re.FindStringMatch(s)for m != nil {matches = append(matches, m.String())m, _ = re.FindNextMatch(m)}return matches
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/67070.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

学习及笔记

1、计算md5 md5sum 文件名 2、跨服务器复制 scp 文件 目标用户名目标Ip:目标路径 3、curl curl -X POST http://10.105.2.46/getUerls -H "Content-Type: application/json" -d {"id": 379, "userId": "lyc", "password":…

【Unity插件】解决移动端UI安全区问题 - Safe Area Helper

在移动端设计界面时&#xff0c;必须要考虑的就是UI的安全区。 Unity本身也提供了Safearea的API。 但在asset store时已经有人提供了免费的插件&#xff08;Safe Area Helper&#xff09;&#xff0c;我们可以直接使用。 插件链接&#xff1a; https://assetstore.unity.com/p…

机器学习之随机森林算法实现和特征重要性排名可视化

随机森林算法实现和特征重要性排名可视化 目录 随机森林算法实现和特征重要性排名可视化1 随机森林算法1.1 概念1.2 主要特点1.3 优缺点1.4 步骤1.5 函数及参数1.5.1 函数导入1.5.2 参数 1.6 特征重要性排名 2 实际代码测试 1 随机森林算法 1.1 概念 是一种基于树模型的集成学…

OpenAI 故障复盘 - 阿里云容器服务与可观测产品如何保障大规模 K8s 集群稳定性

本文作者&#xff1a; 容器服务团队&#xff1a;刘佳旭、冯诗淳 可观测团队&#xff1a;竺夏栋、麻嘉豪、隋吉智 一、前言 Kubernetes(K8s)架构已经是当今 IT 架构的主流与事实标准&#xff08;CNCF Survey[1]&#xff09;。随着承接的业务规模越来越大&#xff0c;用户也在使…

面试:C++类成员初始化顺序

1、非静态数据成员&#xff1a;按它们在类定义的声明顺序初始化&#xff0c;不会按它们在初始化列表的顺序。 2、静态数据成员&#xff1a;在main函数启动之前&#xff0c;并且只初始化一次 3、基类构造函数&#xff1a;如果类从一个或多个基类继承而来&#xff0c;基类的构造…

Vue.js 使用插槽(Slots)优化组件结构

Vue.js 使用插槽&#xff08;Slots&#xff09;优化组件结构 今天我们聊聊 Vue.js 的一个超实用功能——插槽&#xff08;Slots&#xff09;。插槽是 Vue 组件开发中的神器&#xff0c;用好它&#xff0c;你可以让组件变得更灵活、更可复用&#xff0c;还能写出优雅的代码结构…

SpringBoot 使用 Cache 集成 Redis做缓存保姆教程

1. 项目背景 Spring Cache是Spring框架提供的一个缓存抽象层&#xff0c;它简化了缓存的使用和管理。Spring Cache默认使用服务器内存&#xff0c;并无法控制缓存时长&#xff0c;查找缓存中的数据比较麻烦。 因此Spring Cache支持将缓存数据集成到各种缓存中间件中。本文已常…

机器学习全流程解析:数据导入到服务上线全阶段介绍

目录 1. 数据导入 2. 数据预处理 3. 超参数搜索与优化 4. 模型训练 5. 模型评估 6. 模型压缩与优化 7. 模型注册与版本管理 8. 服务上线与部署 总结 1. 数据导入 数据源&#xff1a;数据库、文件系统、API等。数据格式&#xff1a;CSV、JSON、SQL 数据库表、Parquet …

MySQL —— 在CentOS9下安装MySQL

MySQL —— 在CentOS9下安装MySQL 1.查看自己操作系统的版本2.找到对应的安装源3.上传我们在windows下&#xff0c;下载的文件&#xff0c;解压4.执行rpm命令&#xff0c;启用MySQL8仓库5.执行dnf install -y mysql-community-server6.设置开机自启动7.获得初始密码8.登录MySQL…

Center Loss 和 ArcFace Loss 笔记

一、Center Loss 1. 定义 Center Loss 旨在最小化类内特征的离散程度&#xff0c;通过约束样本特征与其类别中心之间的距离&#xff0c;提高类内特征的聚合性。 2. 公式 对于样本 xi​ 和其类别yi​&#xff0c;Center Loss 的公式为&#xff1a; xi​: 当前样本的特征向量&…

AI在软件工程教育中的应用与前景展望

引言 随着科技的快速发展&#xff0c;软件工程教育面临着前所未有的挑战与机遇。传统的教学模式逐渐无法满足快速变化的行业需求&#xff0c;学生们需要更多的实践经验和个性化的学习方式。而在这样的背景下&#xff0c;人工智能&#xff08;AI&#xff09;作为一项创新技术&a…

【微服务】面试 7、幂等性

幂等性概念及场景 概念&#xff1a;多次调用方法或接口不改变业务状态&#xff0c;重复调用结果与单次调用一致。例如在京东下单&#xff0c;多次点击提交订单只能成功一次。场景&#xff1a;包括用户重复点击、网络波动导致多次请求、mq 消息重复消费、代码中设置失败或超时重…

Redis 为什么要引入 Pipeline机制?

在 Redis 中有一种 Pipeline&#xff08;管道&#xff09;机制&#xff0c;其目的是提高数据传输效率和吞吐量。那么&#xff0c;Pipeline是如何工作的&#xff1f;它又是如何提高性能的&#xff1f;Pipeline有什么优缺点&#xff1f;我们该如何使用 Pipeline&#xff1f; 1、…

Windows自动化Python pyautogui RPA操作

依赖包 import time import pyautogui import pyperclip import os import psutil from pywinauto.application import Application睡眠&#xff1a; pyautogui.sleep(1)鼠标事件&#xff1a; pyautogui.moveTo(100, 100, duration0.25) pyautogui.click(100, 100, duration0.…

游戏引擎学习第78天

Blackboard: Position ! Collision “网格” 昨天想到的一个点&#xff0c;可能本来就应该想到&#xff0c;但有时反而不立即思考这些问题也能带来一些好处。节目是周期性的&#xff0c;每天不需要全程关注&#xff0c;通常只是在晚上思考&#xff0c;因此有时我们可能不能那么…

conda相关激活问题

source ~/anaconda3/bin/activate 是一个用于激活 Conda 环境的命令。具体来说&#xff0c;它的作用是加载 Conda 的环境变量和配置&#xff0c;使你可以使用 conda 命令以及 Conda 管理的 Python 环境。 1. 命令解析 source&#xff1a;是一个 Shell 命令&#xff0c;用于在当…

使用 C# 制作图像的特写窗口

许多网站都会显示一个特写窗口&#xff0c;其中显示放大的图像部分&#xff0c;以便您可以看到更多细节。您在主图像上移动鼠标&#xff0c;它会在单独的图片中显示特写。此示例执行的操作类似。&#xff08;示例使用的一些数学运算非常棘手&#xff0c;因此您可能需要仔细查看…

Python学习(三)基础入门(数据类型、变量、条件判断、模式匹配、循环)

目录 一、第一个 Python 程序1.1 命令行模式、Python 交互模式1.2 Python的执行方式1.3 SyntaxError 语法错误1.4 输入和输出 二、Python 基础2.1 Python 语法2.2 数据类型1&#xff09;Number 数字2&#xff09;String 字符串3&#xff09;List 列表4&#xff09;Tuple 元组5&…

【MySQL】SQL菜鸟教程(一)

1.常见命令 1.1 总览 命令作用SELECT从数据库中提取数据UPDATE更新数据库中的数据DELETE从数据库中删除数据INSERT INTO向数据库中插入新数据CREATE DATABASE创建新数据库ALTER DATABASE修改数据库CREATE TABLE创建新表ALTER TABLE变更数据表DROP TABLE删除表CREATE INDEX创建…

PySpark广播表连接解决数据倾斜的完整案例

使用PySpark解决数据倾斜问题的完整案例&#xff0c;通过广播表连接的方式来优化性能。 准备数据 假设我们有两张表&#xff0c;一张大表 big_table 和一张小表 small_table &#xff0c;小表将作为广播表。 from pyspark.sql import SparkSession# 初始化SparkSession spar…