【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 将是一个包含一个单元素的单元格数组,其中包含了匹配的单词。

相关推荐
卓律涤18 分钟前
【找工作系列①】【大四毕业】【复习】巩固JavaScript,了解ES6。
开发语言·前端·javascript·笔记·程序人生·职场和发展·es6
xqlily29 分钟前
MATLAB安装常见问题解决方案
开发语言·matlab
love530love1 小时前
【笔记】记一次PyCharm的问题反馈
ide·人工智能·windows·笔记·python·pycharm
笑鸿的学习笔记1 小时前
虚幻引擎5-Unreal Engine笔记之Pawn与胶囊体的关系
笔记·ue5·虚幻
tyatyatya2 小时前
MATLAB中进行深度学习网络训练的模型评估步骤
网络·深度学习·matlab
孤寂大仙v2 小时前
【Linux笔记】——线程同步条件变量与生产者消费者模型的实现
linux·c++·笔记
许小禾上学记2 小时前
4.1 多层感知机 MLP 笔记
笔记
DjangoJason3 小时前
计算机网络 : Socket编程
linux·服务器·开发语言·笔记·计算机网络
张哈大4 小时前
【 Redis | 实战篇 秒杀优化 】
java·数据库·redis·笔记·缓存
笑鸿的学习笔记5 小时前
虚幻引擎5-Unreal Engine笔记之`GameMode`、`关卡(Level)` 和 `关卡蓝图(Level Blueprint)`的关系
笔记·ue5·虚幻