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

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MATLAB正则表达式(Regular Expressions)是一种强大的文本搜索和处理工具,可以在字符串中匹配特定的模式。 MATLAB中的正则表达式可以使用以下函数进行处理: 1. regexp:用于在字符串中查找正则表达式的匹配项,并返回匹配项的位置和子字符串。 2. regexprep:用于在字符串中查找正则表达式的匹配项,并将其替换为指定的字符串。 3. regexpi:与regexp函数类似,但是不区分大小写。 4. regexprep:与regexprep函数类似,但是不区分大小写。 5. regextranslate:将MATLAB字符串转换为正则表达式字符串。 在MATLAB中,正则表达式的语法与其他语言中的正则表达式语法类似。以下是一些常用的正则表达式语法: 1. ^:匹配输入字符串的开始位置。 2. $:匹配输入字符串的结束位置。 3. .:匹配除换行符以外的任何单个字符。 4. *:匹配前面的字符零次或多次。 5. +:匹配前面的字符一次或多次。 6. ?:匹配前面的字符零次或一次。 7. []:表示一个字符集,匹配其中的任何一个字符。 8. [^]:表示一个反向字符集,匹配未在其中的任何一个字符。 9. ():表示一个子表达式,可以在表达式中引用。 例如,以下代码将查找字符串中所有以大写字母开头的单词,并将它们替换为“Word”: str = 'This is a Test String'; newStr = regexprep(str, '\<([A-Z][a-z]*)\>', 'Word'); 输出结果为: newStr = 'Word is a Word Word'
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值