当前位置: 首页 > news >正文

MATLAB中regexpi函数用法

目录

语法

说明

示例

模式匹配

区分大小写的匹配


        regexpi函数的功能是匹配正则表达式(不区分大小写)。

语法

startIndex = regexpi(str,expression)
[startIndex,endIndex] = regexpi(str,expression)
out = regexpi(str,expression,outkey)
[out1,...,outN] = regexpi(str,expression,outkey1,...,outkeyN)
___ = regexpi(___,option1,...,optionM)
___ = regexpi(___,'forceCellOutput')

说明

        startIndex = regexpi(str,expression) 返回 str 的每个子字符串(与该正则表达式指定的字符模式匹配)的起始索引,而不考虑字母大小写。如果没有匹配项,则 startIndex 为空数组。

        [startIndex,endIndex] = regexpi(str,expression) 返回所有匹配项的开始和结束索引。

        out = regexpi(str,expression,outkey) 返回 outkey 指定的输出。例如,如果 outkey 为 'match',则 regexpi 返回与该表达式匹配的子字符串而非其开始索引。

        [out1,...,outN] = regexpi(str,expression,outkey1,...,outkeyN) 按指定的顺序返回多个输出关键字指定的输出。例如,如果您指定 'match'、'tokens',则 regexpi 返回与整个表达式匹配的子字符串以及与部分表达式匹配的词元。

        ___ = regexpi(___,option1,...,optionM) 使用指定的选项标志修改搜索。例如,指定 'matchcase' 以执行区分大小写的匹配。您可以包括任何输入并请求之前语法中的任何输出。

        ___ = regexpi(___,'forceCellOutput') 以标量元胞的形式返回每个输出参数。元胞包含被描述为上述语法输出的数值数组或子字符串。可以包括任何输入并请求之前语法中的任何输出。

示例

模式匹配

        查找以 c 开头并以 t 结尾且其中包含一个或多个元音的单词。

str = 'bat cat can car COAT court cut ct CAT-scan';
expression = 'c[aeiou]+t';
startIndex = regexpi(str,expression)
startIndex = 1×4

     5    17    28    35

startIndex 中的值指示与正则表达式匹配的每个单词的第一个字符的索引。

正则表达式 'c[aeiou]+t' 指定以下模式:

  • c 必须为第一个字符。

  • c 必须后跟方括号内的一个字符 [aeiou]。

  • 括起的模式必须出现一次或多次,如 + 运算符所指示。

  • t 必须为最后一个字符,括起的模式和 t 之间没有任何字符。

区分大小写的匹配

        在整个或部分表达式中匹配字母大小写。默认情况下,regexpi 执行不区分大小写的匹配。

str = 'A character vector with UPPERCASE and lowercase text.';
expression = '\w*case';
matchStr = regexpi(str,expression,'match')
matchStr = 1x2 cell
    {'UPPERCASE'}    {'lowercase'}

        使用与 regexpi 具有相同语法的 regexp 函数执行区分大小写的匹配。

matchWithRegexp = regexp(str,expression,'match')
matchWithRegexp = 1x1 cell array
    {'lowercase'}

        使用 'ignorecase' 选项可对 regexp 禁用区分大小写的匹配。 

matchWithIgnorecase = regexp(str,expression,'match','ignorecase')
matchWithIgnorecase = 1x2 cell
    {'UPPERCASE'}    {'lowercase'}

        对于多个表达式,使用 (?i) 和 (?-i) 搜索标志对选定表达式启用和禁用不区分大小写的匹配。

expression = {'(?-i)\w*case';...
              '(?i)\w*case'};
matchStr = regexp(str,expression,'match');
celldisp(matchStr)
 
matchStr{1}{1} =
 
lowercase
 
 
matchStr{2}{1} =
 
UPPERCASE
 
 
matchStr{2}{2} =
 
lowercase
 

参数说明

 str — 输入文本

          输入文本,指定为字符向量、字符向量元胞数组或字符串数组。元胞数组中的每个字符向量或字符串数组中的每个字符串可以为任意长度并包含任意字符。

        如果 str 和 expression 均为字符串数组或元胞数组,则它们的维度必须相同。

expression — 正则表达式

        正则表达式,指定为字符向量、字符向量元胞数组或字符串数组。每个表达式可包含字符、元字符、运算符、词元和用于指定在 str 中匹配的模式的标志。

下表描述了正则表达式的各元素。

option — 搜索选项

        搜索选项,指定为字符向量。选项成对出现:一个选项对应于默认行为,另一个选项允许覆盖默认值。仅指定一对中的一个选项。选项可以按任意顺序显示。

startIndex — 每个匹配项的开始索引

每个匹配项的开始索引,以行向量或元胞数组的形式返回,如下所示:

  • ​如果 str 和 expression 均为字符向量或字符串标量,则输出为行向量(或者,如果没有任何匹配项,则为空数组)。

  • 如果 str 或 expression 有一个是字符向量元胞数组或字符串数组,另一个是字符向量或字符串标量,则输出是行向量元胞数组。输出元胞数组与输入数组具有相同的维度。

  • 如果 str 和 expression 均为元胞数组或字符串数组,则它们的维度必须相同。输出是具有相同维度的元胞数组。

endIndex — 每个匹配项的结束索引

每个匹配项的结束索引,以行向量或元胞数组的形式返回,如下所示:

  • ​如果 str 和 expression 均为字符向量或字符串标量,则输出为行向量(或者,如果没有任何匹配项,则为空数组)。

  • 如果 str 或 expression 有一个是字符向量元胞数组或字符串数组,另一个是字符向量或字符串标量,则输出是行向量元胞数组。输出元胞数组与输入数组具有相同的维度。

  • 如果 str 和 expression 均为元胞数组或字符串数组,则它们的维度必须相同。输出是具有相同维度的元胞数组。

out — 有关匹配项的信息

        有关匹配项的信息,以数值、元胞、字符串或结构体数组的形式返回。输出中的信息取决于为 outkey 指定的值。

词元

        词元是对应于正则表达式部分的匹配文本部分。要创建词元,请将正则表达式部分括在圆括号中。例如,此表达式查找 dd-mmm-yyyy 形式的日期,包括日、月和年的词元。

str = 'Here is a date: 01-Apr-2020';
expression = '(\d+)-(\w+)-(\d+)';

mydate = regexp(str,expression,'tokens');
mydate{:}
ans =

  1×3 cell array

    {'01'}    {'Apr'}    {'2020'}

可以将名称与词元关联起来以使其更便于识别:

str = 'Here is a date: 01-Apr-2020';
expression = '(?<day>\d+)-(?<month>\w+)-(?<year>\d+)';

mydate = regexp(str,expression,'names')
mydate = 

  struct with fields:

      day: '01'
    month: 'Apr'
     year: '2020'

相关文章:

  • 想要追踪一个在传送带上运动的东西,该怎么选择工业相机呢,需要考虑哪些因素
  • 国产Linux OS:网络性能调优关键内核参数
  • 【医学影像AI】50个眼科影像数据集(1)分类任务
  • 软件测试技术之跨平台的移动端UI自动化测试(上)
  • VSCode 中使用 Snippets 设置常用代码块
  • 数据结构:顺序表(Sequence List)及其实现
  • Natural Language Processing NLP
  • Ubuntu轻松部署ToolJet低代码开发平台结合内网穿透远程访问
  • Blackbox.AI:高效智能的生产力工具新选择
  • 实用且美观,一款简单且模块化的UI组件库!
  • 【Linux】【网络】Libevent 内部实现简略版
  • CentOS 7.8 安装MongoDB 7 副本集(Replica Set)
  • Datablau产品全面接入DeepSeek
  • DeepSeek 服务器繁忙的全面解决方案
  • Firebase详解及使用方法
  • openGauss 3.0 数据库在线实训课程18:学习视图管理
  • SpringBoot3.x整合WebSocket
  • remix中为什么Dev -Ganache Provider没有了; remix中区块链常见的链接方式有哪些
  • 开源工具推荐--思维导图、流程图等绘制
  • 轮播图html
  • 常州新型碳材料集群产值近二千亿,请看《浪尖周报》第24期
  • 山东茌平民企巨头实控人省外再出手:斥资16亿拿下山西一宗探矿权
  • 首映|《星际宝贝史迪奇》真人电影,不变的“欧哈纳”
  • 一箭六星,朱雀二号改进型遥二运载火箭发射成功
  • 350种咖啡主题图书集结上海,20家参展书店买书送咖啡
  • 标普500指数连涨四日,大型科技股多数下跌