在Openresty中将字符串按照下划线 _ ,分隔成两部分

在 OpenResty 中,可以使用 Lua 提供的字符串操作函数 string.matchngx.re.match 来将字符串按照下划线 _ 分隔成两部分。下面是一个示例代码,展示如何实现这一功能:

使用 string.match 实现

http {server {listen 80;server_name localhost;location /split_string {default_type text/plain;content_by_lua_block {-- 定义要分割的字符串local str = "part1_part2"-- 使用 string.match 分割字符串local first_part, second_part = string.match(str, "([^_]+)_([^_]+)")if first_part and second_part thenngx.say("First part: ", first_part)ngx.say("Second part: ", second_part)elsengx.say("Failed to split string")end}}}
}

使用 ngx.re.match 实现

http {server {listen 80;server_name localhost;location /split_string {default_type text/plain;content_by_lua_block {-- 定义要分割的字符串local str = "part1_part2"-- 使用 ngx.re.match 分割字符串local m, err = ngx.re.match(str, "([^_]+)_([^_]+)")if m thenngx.say("First part: ", m[1])ngx.say("Second part: ", m[2])elsengx.say("Failed to split string: ", err)end}}}
}

解释:

  1. string.match 实现

    • string.match(str, "([^_]+)_([^_]+)"):使用 Lua 的 string.match 函数和模式匹配,分割字符串。模式 ([^_]+)_([^_]+) 匹配下划线 _ 前后的非下划线字符,并分别捕获这两部分。
  2. ngx.re.match 实现

    • ngx.re.match(str, "([^_]+)_([^_]+)"):使用 OpenResty 提供的 ngx.re.match 函数和正则表达式,分割字符串。正则表达式 ([^_]+)_([^_]+) 匹配下划线 _ 前后的非下划线字符,并分别捕获这两部分。

这两种方法都可以实现将字符串按照下划线 _ 分隔成两部分。你可以根据自己的喜好和需求选择其中一种方法。

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

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

相关文章

Open3D 从体素网格构建八叉树

目录 一、概述 1.1体素网格 1.2八叉树构建 1.3应用 二、代码实现 2.1关键函数 2.2完整代码 三、实现效果 3.1原始点云 3.2体素网格 3.3八叉树 3.4体素网格 一、概述 八叉树(Octree)是一种树状数据结构,用于递归地将三维空间划分为…

探展2024世界人工智能大会之令人惊艳的扫描黑科技~

文章目录 ⭐️ 前言⭐️ AIGC古籍修复文化遗产焕新⭐️ 高效的文档图像处理解决方案⭐️ AIGC扫描黑科技一键全搞定⭐️ 行业级的知识库大模型加速器⭐️ 结语 ⭐️ 前言 大家好,我是 哈哥(哈哥撩编程),这次非常荣幸受邀作为专业…

# Redis 入门到精通(一)数据类型(1)

Redis 入门到精通(一)数据类型(1) 一 、Redis 入门到精通 基本介绍 1、Redis 基础 ( windows 环境 ) redis 入门数据类型通用命令Jedis 2、Redis 高级 ( linux 环境 ) 持久化redis.conf 配置事务集群 3、Redis 应用 ( linux…

React -- useState状态更新异步特性——导致获取值为旧值的问题

useState状态异步更新 问题导致的原因解决办法进一步分析后续遇到的新问题 问题 const [isSelecting, setIsSelecting] useState(false);useEffect(() > {const handleKeyDown (event) > {if (event.key Escape) {if(isSelectingRef){//.......setIsSelecting(!isSele…

封装了一个仿照抖音效果的iOS评论弹窗

需求背景 开发一个类似抖音评论弹窗交互效果的弹窗,支持滑动消失, 滑动查看评论 效果如下图 思路 创建一个视图,该视图上面放置一个tableView, 该视图上添加一个滑动手势,同时设置代理,实现代理方法 (BOOL)gestur…

如何理解JavaScript代理对象(JavaScript Proxy)

JavaScript的Proxy对象是一种强大且灵活的特性,它允许你拦截并自定义对对象执行的操作。自ECMAScript 6(ES6)引入以来,Proxy对象为控制对象的基本操作行为提供了一种机制,使高级用例和改进的安全性成为可能。 代理对象…

HNTs-g-PEG-CDs-Biotin NPs;碳量子点修饰接枝生物素化的羟基磷灰石纳米管

HNTs-g-PEG-CDs-Biotin NPs,即碳量子点修饰接枝生物素化的羟基磷灰石纳米管,是一种结合了多种先进材料特性的纳米复合材料。以下是对该材料的详细分析: 一、组成成分及特性 羟基磷灰石纳米管(HNTs): 羟基磷…

构造函数语意学(The Semantics of Constructors)

1、“Default Constructor” 的构造操作 下面4种情况编译器会生成默认构造函数: 成员类对象带有默认构造函数父类带有默认构造函数带有虚表的类带有虚基类的类 1.1、 成员类对象带有默认构造函数 如果一个类没有任何构造函数,但它的一个成员对象带有…

【深度学习】探讨最新的深度学习算法、模型创新以及在图像识别、自然语言处理等领域的应用进展

深度学习作为人工智能领域的重要分支,近年来在算法、模型以及应用领域都取得了显著的进展。以下将探讨最新的深度学习算法与模型创新,以及它们在图像识别、自然语言处理(NLP)等领域的应用进展。 一、深度学习算法与模型创新 新型…

elasticSearch的索引库文档的增删改查

我们都知道,elasticsearch在进行搜索引擎的工作时,是会先把数据库中的信息存储一份到elasticsearch中,再去分词查询等之后的工作的。 elasticsearch中的文档数据会被序列化为json格式后存储在elasticsearch中。elasticsearch会对存储的数据进…

重庆交通大学数学与统计学院携手泰迪智能科技共建的“智能工作室”

2024年7月4日,重庆交通大学数学与统计学院与广东泰迪智能科技股份有限公司携手共建的“智能工作室”授牌仪式在南岸校区阳光会议室举行。此举标志着数统学院与广东泰迪公司校企合作新篇章的开启,也预示着学院在智能科技教育领域的深入探索和实践。 广东…

代发考生战报:南京考场华为售前HCSP H19-411考试通过

代发考生战报:南京考场华为售前HCSP H19-411考试通过,客服给的题库非常稳定,考试遇到2个新题,剩下全是题库里的原题,想考的放心考吧,考场服务挺好,管理员带着做签名和一些考试说明介绍清楚&…

C++/Qt 信号槽机制详解

文章目录 C++/Qt 信号槽机制详解一、信号和槽的基本概念1. 信号2. 槽3. 连接二、信号和槽的基本使用1. 信号和槽的声明和定义2. 连接信号和槽三、信号和槽的工作原理1. MOC(Meta-Object Compiler)2. 事件循环3. 连接类型四、信号和槽的高级应用1. 自定义信号和槽2. Lambda 表…

科研绘图系列:R语言分组柱状图一(Grouped Bar Chart)

介绍 分组柱状图(Grouped Bar Chart)是一种数据可视化图表,用于比较不同类别(分组)内各子类别(子组)的数值。在分组柱状图中,每个分组有一组并列的柱子,每个柱子代表一个子组的数值,不同的分组用不同的列来表示。 特点: 并列柱子:每个分组内的柱子是并列的,便于…

51 单片机[7]:计时器

一、定时器 1. 定时器介绍 51单片机的定时器属于单片机的内部资源,其电路的连接和运转均在单片机内部完成。 定时器作用: (1)用于计时系统,可实现软件计时,或者使程序每隔一固定时间完成一项操作 &#…

运算符和表达式

运算符 运算:对数据进行加工和处理。 运算符:表示各种运算的符号。 操作数:参与运算的数据。 根据操作数的个数,可以将运算符分为单目、双目和多目运算符。单目运算符只对1个操作数运算,双目运算符对2个操作数运算…

k8s中port,targetPort,nodePort,containerPort的区别

一、说明 在 Kubernetes 中,port、targetPort、nodePort 和 containerPort 是用于定义服务(Service)和容器之间网络通信的不同参数。 它们各自的作用和含义如下: 1. port 定义:这是服务对外暴露的端口号。作用&#x…

linux指令练习

二、touch、vi练习: 1、在root家目录下创建目录A1和B1 2、进入B1下同时创建三个文件m1, m2 , n1,单独创建目录N1 3、进入到A1目录中分别创建一个文件t1,k2,同时创建目录F1,F2 4、删除B1下的所有1结尾的文件或者目录 5、删除A1目录…

Python基础知识——(001)

文章目录 P4——3. 程序设计语言的分类 1. 程序设计语言 2. 编译与解释 P5——4. Python语言的简介与开发工具 1. Python语言的简介 2. Python语言的发展 3. Python语言的特点 4. Python的应用领域 5. Python的开发工具 P6——5. IPO编程方式 IPO程序编写方法 P7——6. print函…

【从0到1 在AMD显卡的win上安装stable-diffusion】

摘要: 终于换了台电脑了,这太电脑32G运行内存,4G核显(想买有独显的,不过好贵哦),AMD R7 8核处理器。看着这么高的配置,心有点痒痒的,不能浪费了这个配置呀,哈哈,于是就有了安装Stable-Diffusion的想法。 安装步骤: 1、环境搭建: 安装Python 3.10.6(较新版本的…