MATLAB中regexpi函数用法

ops/2025/2/22 17:21:12/

目录

语法

说明

示例

模式匹配

区分大小写的匹配


        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×45    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} =lowercasematchStr{2}{1} =UPPERCASEmatchStr{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'


http://www.ppmy.cn/ops/159675.html

相关文章

Java零基础入门笔记:(4)方法

前言 本笔记是学习狂神的java教程&#xff0c;建议配合视频&#xff0c;学习体验更佳。 【狂神说Java】Java零基础学习视频通俗易懂_哔哩哔哩_bilibili 第1-2章&#xff1a;Java零基础入门笔记&#xff1a;(1-2)入门&#xff08;简介、基础知识&#xff09;-CSDN博客 第3章…

Machine Learning:Optimization

文章目录 局部最小值与鞍点 (Local Minimum & Saddle Point)临界点及其种类判断临界值种类 批量与动量(Batch & Momentum)批量大小对梯度下降的影响动量法 自适应学习率AdaGradRMSPropAdam 学习率调度优化总结 局部最小值与鞍点 (Local Minimum & Saddle Point) 我…

DeepSeek24小时写作机器人,持续创作高质量文案

内容创作已成为企业、自媒体和创作者的核心竞争力。面对海量的内容需求&#xff0c;人工创作效率低、成本高、质量参差不齐等问题日益凸显。如何在有限时间内产出高质量内容&#xff1f;DeepSeek写作机器人&#xff0c;一款24小时持续创作的智能工具&#xff0c;为企业和个人提…

Linux:基础IO(三.软硬链接、动态库和静态库、动精态库的制作和加载)

1.软硬链接 1.1硬链接 硬链接&#xff08;Hard Link&#xff09;是Linux系统中的一种文件链接方式&#xff0c;它允许多个文件名指向同一个inode&#xff08;索引节点&#xff09;&#xff0c;从而实现多个文件名指向同一个物理文件数据块。 硬链接与原始文件之间没有任何区…

XSS盲打:当攻击者“盲狙”管理员

XSS盲打&#xff1a;当攻击者“盲狙”管理员 上集回顾 ​ 在之前的章节中&#xff0c;我们解锁了XSS漏洞的高阶玩法&#xff1a;偷Cookie。今天&#xff0c;我们将探索XSS的另一种攻击场景——XSS盲打。这种攻击方式就像“盲狙”一样&#xff0c;攻击者看不到前端的反馈&…

【UE5 C++课程系列笔记】30——自动拷贝DLL及其他资源

前言 在上一篇&#xff08;【UE5 C课程系列笔记】29——在UE中使用第三方库的流程&#xff09;博客中&#xff0c;我们已经实现了在UE中使用外部的.dll文件。本篇博客将介绍在缺少“Binaries”和“Intermediate”文件夹的情况下&#xff0c;如何将.dll文件等外部资源自动拷贝&a…

每日一题——将数字字符串转化为IP地址

将数字字符串转化为IP地址 题目描述解题思路回溯法步骤分解 代码实现全局变量有效性验证函数回溯函数主函数完整代码 复杂度分析关键点说明总结 这题难度还挺大的&#xff0c;整体上实现并不容易。建议参考视频 和https://programmercarl.com/0093.%E5%A4%8D%E5%8E%9FIP%E5%9C%…

1688商品评论API接口概述,json数据示例参考

前言 1688商品评论API接口是阿里巴巴旗下1688平台为开发者提供的一项数据服务&#xff0c;旨在帮助商家和开发者获取1688平台上商品的评论数据。以下是对该接口的详细概述&#xff1a; 一、主要功能 获取商品评论数据&#xff1a;通过API接口&#xff0c;开发者可以获取到指…