【Matlab笔记_15】正则表达式之特殊字符文本位置提取

目标:

  • 1.提取“BLT-1-A1.txt”中第一个’-‘前面的所有字符。
  • 2.提取“BLT-1-A1.txt”中第一个’-‘和第二个’-‘中间的所有字符。
  • 3.提取“BLT-1-A1.txt”中最后一个’-‘和最后一个’.‘中间的所有字符。

方法如下:

1.提取“BLT-1-A1.txt”中第一个’-‘前面的所有字符。

file_name ='BLT-1-A1.txt';
type = regexp(file_name, '^[^-]+', 'match');

注:
这个正则表达式的含义是匹配从字符串开始(^)到第一个连字符(-)之前的所有字符。这样,它会提取第一个连字符前面的内容。

请注意,这里使用的是 ^ [^-]+,其中:

^:表示匹配字符串的开始。
[ ^ - ]:表示除了连字符(-)以外的任何字符。
+:表示匹配前面的字符一个或多个。
这个正则表达式会匹配字符串开头的所有非连字符字符,直到遇到第一个连字符为止。

2.提取“BLT-1-A1.txt”中第一个’-‘和第二个’-‘中间的所有字符。

file_name ='BLT-1-A1.txt';
type = regexp(file_name, '(?<=-)\w+(?=-)', 'match');

(?<=-): 这是一个正向后顾界定。它表示在匹配的内容之前必须有一个连字符(-)。这个部分不会包含在最终匹配结果中。
\w+: 这是一个匹配一个或多个单词字符的正则表达式。\w 表示任何字母、数字或下划线字符,而 + 表示匹配前面的字符一个或多个。
(?=-): 这是一个正向前瞻界定。它表示在匹配的内容之后必须有一个连字符(-)。这个部分不会包含在最终匹配结果中。
‘match’: 这是 regexp 函数的选项,表示返回与整个正则表达式匹配的字符串。

综合起来,这个正则表达式的目标是匹配文件名中两个连字符(-)之间的单词,并将这个匹配结果存储在变量 type 中。

但是若是文件用有多个-,如’BLT-1-BKGD-A1.txt’;,只要第一个和第二个‘-’之间的可以如下处理:

file_name ='BLT-1-BKGD-A1.txt';
type = regexp(file_name, '(?<=-)\w+(?=-.*-)', 'match');

这里修改了正则表达式模式:

(?<=-): 仍然是正回顾后界定,表示匹配的内容必须位于一个连字符(-)的后面。
\w+: 仍然是匹配一个或多个单词字符(字母、数字或下划线)的部分。
(?=-.-): 新增的部分,这是一个正前瞻后界定,表示匹配的内容必须位于第一个连字符(-)后,并且在该连字符后面存在至少一个任意字符(.),然后紧跟着第二个连字符。
这样,整个正则表达式将匹配第一个和第二个连字符之间的内容。

这里使用 .* 来表示匹配任意字符(除了换行符)。如果想要限定为非连字符的字符,可以使用 [^-],其中 [^-] 表示匹配除了连字符以外的任意字符, 表示匹配零个或多个。

3.提取“BLT-1-A1.txt”中最后一个’-‘和最后一个’.‘中间的所有字符。

file_name ='BLT-1-A1.txt';
type = regexp(file_name, '[-](\w+)\.', 'tokens', 'once');

’[-]‘: 这是匹配一个连字符(-)的部分。

(\w+): 这是匹配一个或多个单词字符(字母、数字或下划线)的部分,并使用圆括号将匹配的内容分组。这表示我们对这一部分感兴趣,后续可以通过结果访问。

.: 这是匹配一个点号(.)的部分。由于点号在正则表达式中有特殊含义(匹配任意字符),因此在这里我们使用反斜杠进行转义,表示匹配实际的点号。

‘tokens’: 这是 regexp 函数的一个选项,用于指定返回的结果形式。在这里,我们使用 ‘tokens’,表示返回匹配项的令牌,也就是正则表达式中用括号分组的部分。

‘once’: 这是 regexp 函数的另一个选项,表示只返回第一个匹配的结果。因为你可能有多个匹配项,但我们只对第一个感兴趣。

因此,整个代码的作用是从文件名中提取一个连字符后、点号前的单词,并将结果存储在 type变量中。如果没有匹配到符合正则表达式的内容,type将是一个空数组。如果匹配到内容,type 将是一个包含一个单元素的单元格数组,其中包含了匹配的单词。

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

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

相关文章

回归预测 | MATLAB实现BO-GRU贝叶斯优化门控循环单元多输入单输出回归预测

回归预测 | MATLAB实现BO-GRU贝叶斯优化门控循环单元多输入单输出回归预测 目录 回归预测 | MATLAB实现BO-GRU贝叶斯优化门控循环单元多输入单输出回归预测效果一览基本介绍模型搭建程序设计参考资料 效果一览 基本介绍 MATLAB实现BO-GRU贝叶斯优化门控循环单元回归预测。基于贝…

单片机入门后该怎么学习进一步提升?

单片机入门后该怎么学习进一步提升&#xff1f; 可以将你目前会的单片机基础先整理一下&#xff0c;你看看运用这些基本的外设或者一些入门知识能做个什么东西&#xff0c;最近很多小伙伴找我&#xff0c;说想要一些单片机资料&#xff0c;然后我根据自己从业十年经验&#xff…

C#—VB.NET的相同点与不同点

目录 前言 一、相同之处 二、不同之处 三、总结 前言 VB.NET 和C#是两种由微软公司开发的面向对象编程语言。它们在语法上有很多相似之处&#xff0c;但也有一些不同之处。本文将讨论 VB.NET 和C#之间的相同之处和不同之处。 一、相同之处 1.面向对象编程语言&#xff1a…

系列十四、Redis的集群(一)

一、是什么 1.1、概述 由于数据量过大&#xff0c;单个master-slave模式难以承担&#xff0c;当出现master节点故障的一瞬间&#xff0c;哨兵重新选举新的master节点之前&#xff0c;这一小段时间将会导致Redis服务不可用&#xff0c;因此需要对多个master-slave主从复制集进行…

Kafka与MySQL的组合使用

根据上面给出的student表&#xff0c;编写Python程序完成如下操作&#xff1a; &#xff08;1&#xff09;读取student表的数据内容&#xff0c;将其转为JSON格式&#xff0c;发送给Kafka&#xff1b; 创建Student表的SQL语句如下&#xff1a; create table student( sno ch…

设计模式-综合应用(一)

介绍 使用jQuery做一个模拟购物车的示例 用到的设计模式 工厂模式 单例模式装饰器模式 观察者模式状态模式 模板方法模式 代理模式 UML类图

ChatGPT(1):ChatGPT初识

1 ChatGPT原理 ChatGPT 是基于 GPT-3.5 架构的一个大型语言模型&#xff0c;它的工作原理涵盖了深度学习和自然语言处理技术。以下是 ChatGPT 的工作原理的一些关键要点&#xff1a; 神经网络架构&#xff1a;ChatGPT 的核心是一个深度神经网络&#xff0c;采用了变种的 Tran…

网络协议--ICMP:Internet控制报文协议

6.1 引言 ICMP经常被认为是IP层的一个组成部分。它传递差错报文以及其他需要注意的信息。ICMP报文通常被IP层或更高层协议&#xff08;TCP或UDP&#xff09;使用。一些ICMP报文把差错报文返回给用户进程。 ICMP报文是在IP数据报内部被传输的&#xff0c;如图6-1所示。 ICMP…

Java中的泛型:高效编程的利器

泛型—— 一种可以接收数据类型的数据类型。泛型是Java中的一种参数化类型机制&#xff0c;通过类型参数&#xff0c;可以在类、接口和方法中实现通用的代码。 泛型的引入 泛型&#xff08;Generics&#xff09;是 Java 编程语言中引入的一个重要特性&#xff0c;它可以让程序…

FlinkCDC for mysql to Clickhouse

完整依赖 <dependencies><!-- https://mvnrepository.com/artifact/org.apache.flink/flink-core --><dependency><groupId>org.apache.flink</groupId><artifactId>flink-core</artifactId><version>1.13.0</version>…

GRASP 、SOLID 与 GoF 设计模式

一、GRASP GRASP&#xff1a;通用职责分配软件设计模式(General Responsibility Assignment Software Patterns)&#xff0c;其主要思想是基于单一职责设计软件对象。 思考软件对象设计以及大型构件的流行方式是&#xff0c;考虑其职责、角色和协作。这是被称为职责驱动设计&a…

基于CNN实现谣言检测 - python 深度学习 机器学习 计算机竞赛

文章目录 1 前言1.1 背景 2 数据集3 实现过程4 CNN网络实现5 模型训练部分6 模型评估7 预测结果8 最后 1 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 基于CNN实现谣言检测 该项目较为新颖&#xff0c;适合作为竞赛课题方向&#xff0c;学长非常推荐&am…

高速DSP系统设计参考指南(七)电磁干扰基础

&#xff08;七&#xff09;电磁干扰基础 1.概述2.EMI概述3.数字信号4.电流环路5.电源6.传输线7.电源层和地层8. 减少电磁干扰经验法则9.总结 1.概述 高速DSP系统中的辐射是由通过印刷电路板走线传播的快速开关电流和电压引起的。随着DSP速度的提高&#xff0c;印刷电路板走线…

C++ 字符串编码转换封装函数,UTF-8编码与本地编码互转

简介 字符串编码转换封装函数&#xff0c;UTF-8编码与本地编码互转。 中文乱码的解决方法 有时候我们会遇到乱码的字符串&#xff0c;比如&#xff1a; 古文码 可能是用GBK方式读取UTF-8编码的中文导致的&#xff0c;用下面的Utf8ToLocal(string str)函数转换一下就可以了。…

017 基于Spring Boot的食堂管理系统

部分代码地址&#xff1a; https://github.com/XinChennn/xc017-stglxt 基于Spring Boot的食堂管理系统 项目介绍 本项目是基于Java的管理系统。采用前后端分离开发。前端基于bootstrap框架实现&#xff0c;后端使用Java语言开发&#xff0c;技术栈包括但不限于SpringBoot、…

Filter与Listener(过滤器与监听器)

1.Filter 1.过滤器概述 过滤器——Filter&#xff0c;它是JavaWeb三大组件之一。另外两个是Servlet和Listener 它可以对web应用中的所有资源进行拦截&#xff0c;并且在拦截之后进行一些特殊的操作 在程序中访问服务器资源时&#xff0c;当一个请求到来&#xff0c;服务器首…

unity操作_碰撞器 c#

碰撞器Collider 在场景中选择一个物体Cube 观察检查器Inspector 自带Cube会默认挂载盒子碰撞器Box Colilider 增加组件可以增加更多中碰撞器 Edit Collider 编辑碰撞器形状 Is Trigger选项 Is Trigger &#xff1a;是否是触发器&#xff0c;如果启用此属性 则该碰撞体将用于触…

Java面试题-Java核心基础-第七天(String)

目录 一、String、StringBuffer、StringBuilder的区别 二、String为什么是不可变的 三、字符串拼接用""还是用StringBuilder 四、String 中的equals和Object中的equals的区别 五、字符串常量池的作用了解吗&#xff1f; 六、String s1 new String("abc&qu…

数据挖掘(6)聚类分析

一、什么是聚类分析 1.1概述 无指导的&#xff0c;数据集中类别未知类的特征&#xff1a; 类不是事先给定的&#xff0c;而是根据数据的相似性、距离划分的聚类的数目和结构都没有事先假定。挖掘有价值的客户: 找到客户的黄金客户ATM的安装位置 1.2区别 二、距离和相似系数 …

状态空间方程的离散化

一、理论基础 1、系统离散化&#xff08;传递函数和状态空间方程&#xff09; 【离散系统】传递函数和状态空间方程离散化-CSDN博客 状态空间方程的离散化 - 知乎 (zhihu.com) 2、差分方程的建立与分析 【精选】数学建模之差分方程模型详解_左手の明天的博客-CSDN博客 【信…