匹配指定正则表达式的模式

您所在的位置:网站首页 matlab找不到完全匹配项目 匹配指定正则表达式的模式

匹配指定正则表达式的模式

2024-07-15 15:34| 来源: 网络整理| 查看: 265

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

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

元字符

元字符表示字母、字母范围、数字和空格字符。使用它们来构造广义的字符模式。

元字符

描述

示例

.

任何单个字符,包括空白

'..ain' 与以 'ain' 结尾的五个连续字符序列匹配。

[c1c2c3]

包含在方括号中的任意字符。下列字符将按字面意义进行处理:$ | . * + ? 和 -(不用于指示范围时)。

'[rp.]ain' 与 'rain'、'pain' 或 '.ain' 匹配。

[^c1c2c3]

未包含在方括号中的任意字符。下列字符将按字面意义进行处理:$ | . * + ? 和 -(不用于指示范围时)。

'[^*rp]ain' 与以 'ain' 结尾的所有由四个字母组成的序列('rain'、'pain' 和 '*ain' 除外)匹配。例如,它与 'gain'、'lain' 或 'vain' 匹配。

[c1-c2]

c1 到 c2 范围中的任意字符

'[A-G]' 与 A 到 G 范围中的单个字符匹配。

\w

任意字母、数字或下划线字符。对于英语字符集,\w 等同于 [a-zA-Z_0-9]

'\w*' 识别由字母、数字或下划线字符组成的词。

\W

字母、数字或下划线之外的任意字符。对于英语字符集,\W 等同于 [^a-zA-Z_0-9]

'\W*' 标识不是由任意字母、数字或下划线字符组合而成的词。

\s

任意空白字符;等同于 [ \f\n\r\t\v]

'\w*n\s' 与以字母 n 结尾且后跟空白字符的单词匹配。

\S

任意非空白字符;等同于 [^ \f\n\r\t\v]

'\d\S' 与数字(后跟任意非空白字符)匹配。

\d

任意数字;等同于 [0-9]

'\d*' 与任意数量的连续数字匹配。

\D

任意非数字字符;等同于 [^0-9]

'\w*\D\>' 与不以数字结尾的单词匹配。

\oN 或 \o{N}

八进制值 N 的字符

'\o{40}' 与八进制 40 定义的空格字符匹配。

\xN 或 \x{N}

十六进制值 N 的字符

'\x2C' 与十六进制 2C 定义的逗号字符匹配。

字符表示

运算符

描述

\a

警报(蜂鸣)

\b

退格符

\f

换页符

\n

换行符

\r

回车符

\t

水平制表符

\v

垂直制表符

\char

正则表达式中您要从字面上匹配(例如,使用 \\ 匹配单个反斜杠)的具有特殊含义的任意字符。

限定符

限定符指定某个模式必须出现在匹配文本中的次数。expr 表示任意正则表达式。

限定符

表达式出现的次数

示例

expr*

0 次或连续多次。

'\w*' 与任意长度的单词匹配。

expr?

0 次或 1 次。

'\w*(\.m)?' 与单词或以扩展名 .m 结尾(此条件为可选条件)的单词匹配。

expr+

1 次或连续多次。

'' 与 HTML 标记匹配(当文件名包含一个或多个字符时)。

expr{m,n}

至少 m 次,但不超过连续 n 次。

{0,1} 等效于 ?。

'\S{4,8}' 与四到八个非空白字符匹配。

expr{m,}

至少连续 m 次。

{0,} 和 {1,} 分别等效于 * 和 +。

'' 与 HTML 标记匹配(当文件名包含一个或多个字符时)。

expr{n}

恰好连续 n 次。

等效于 {n,n}。

'\d{4}' 与四个连续数字匹配。

限定符可以以三种模式显示,如下表所述。q 表示上表中的任意限定符。

模式

描述

示例

exprq

积极表达式:与尽可能多的字符匹配。

给定文本 '

text

',表达式 '' 与介于 之间的所有字符匹配:

'

text

'

exprq?

消极表达式:与所需的尽可能少的字符匹配。

给定文本 '

text

',表达式 '' 在第一次出现右尖括号 (>) 时结束每个匹配项:

'' '' ''

exprq+

主动表达式:最大程度地匹配,但不重新扫描文本的任何部分。

给定文本 '

text

',表达式 '' 不返回任何匹配项,这是因为右尖括号是使用 .* 捕获的且不进行重新扫描。

分组运算符

分组运算符允许您捕获词元,将一个运算符应用于多个元素或在特定组中禁止追溯。词元是您通过将正则表达式的部分括在括号中而定义的匹配文本的部分。

分组运算符

描述

示例

(expr)

将表达式元素分组并捕获词元。

'Joh?n\s(\w*)' 捕获一个词元,该词元包含名字为 John 或 Jon 的任何人的姓氏。

(?:expr)

分组但不捕获词元。

'(?:[aeiou][^aeiou]){2}' 与两个连续的元音后跟非元音(例如 'anon')的模式匹配。

不进行分组时,'[aeiou][^aeiou]{2}' 与元音后跟两个非元音匹配。

(?>expr)

以原子方式分组。不在组中追溯以完成匹配,并且不捕获词元。

'A(?>.*)Z' 与 'AtoZ' 不匹配,但 'A(?:.*)Z' 与其匹配。使用原子组时,Z 将使用 .* 进行捕获并且不进行重新扫描。

(expr1|expr2)

匹配表达式 expr1 或表达式 expr2。

如果存在与 expr1 匹配的项,则将忽略 expr2。

您可以在左括号后包括 ?: 或 ?> 以禁用词元或以原子方式分组。

'(let|tel)\w+' 匹配包含 let 或 tel 但不以它们结尾的单词。

定位点

表达式中的定位点与文本或单词的开头或结尾匹配。

定位点

与以下项匹配

示例

^expr

输入文本的开头。

'^M\w*' 与以 M 作为文本开头的单词匹配。

expr$

输入文本的结尾。

'\w*m$' 与以 m 作为文本结尾的单词匹配。

\

单词结尾。

'\w*e\>' 与以 e 结尾的任何单词匹配。

环顾断言

环顾断言查找紧邻预期匹配项前后但并非该匹配项一部分的模式。

指针停留在当前位置,并且将放弃或不捕获对应于 test 表达式的字符。因此,前向断言可匹配重叠字符组。

环顾断言

描述

示例

expr(?=test)

向前查找与 test 匹配的字符。

'\w*(?=ing)' 匹配后跟 ing 的词汇,例如输入文本 'Flying, not falling.' 中的 'Fly' 和 'fall'。

expr(?!test)

向前查找与 test 不匹配的字符。

'i(?!ng)' 匹配字母 i 的不后跟 ng 的实例。

(?)expr

向后查找与 test 不匹配的字符。

'(?\d+)-(?\d+)-(?\d+)' 在 mm-dd-yy 形式的输入日期中创建命名月、日和年词元。

注意

如果表达式具有嵌套括号,则 MATLAB® 捕获对应于最外层括号的词元。例如,给定搜索模式 '(and(y|rew))',MATLAB 将为 'andrew' 但不为 'y' 或 'rew' 创建一个词元。

注释

字符

描述

示例

(?#comment)

在正则表达式中插入注释。匹配输入时将忽略注释文本。

'(?# Initial digit)\



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3