Qt对象模型与容器类之正则表达式

博客介绍了正则表达式,它是在文本中匹配子字符串的模式,可简写为regexp。其应用包括验证、搜索、查找和替换、字符串分割。Regexps由表达式、量词和断言组成,还介绍了字符和字符集缩写、量词、断言、通配符等语法,以及文本捕获和新的QRegularExpression类。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

正则表达式:

正则表达式就是在一个文本中匹配子字符串的一种模式(pattern),它可以简写为regexp。一个regexp主要应用在以下几个方面:

  1. 验证。regexp可以测试一个子字符串是否符合一些规范。
  2. 搜索。regexp提供了比简单字符串匹配更强大的模式匹配。
  3. 查找和替换。regexp可以使用一个不同的字符串替换所有匹配的子字符串。
  4. 字符串分割。regexp可以识别在哪里进行字符串分割。

Regexps由表达式、量词和断言组成。

正则表达式中的字符和字符集缩写

元素

含义

c

一个字符代表它本身,除非这个字符有特殊的regexp含义。

\c

跟在反斜杠后面的字符匹配字符本身,但是本表中下面指定的这些字符除外。

\a

匹配ASCII的振铃(BEL0x07

\f

匹配ASCII的换页(FF0x0C

\n

匹配ASCII的换行(LF0x0A

\r

匹配ASCII的回车(CR0x0D

\t

匹配ASCII的水平制表符(HT0x09

\v

匹配ASCII的垂直制表符(VT0x0B

\xhhhh

匹配Unicode字符对应的十六进制数hhhh0x0000~0xFFFF之间)

\0ooo

匹配八进制ASCII/Latin1字符ooo(0~377之间)

.()

匹配任意字符(包括新航)

\d

匹配一个数字

\D

匹配一个非数字

\s

匹配额一个空白字符,包括”\t””\n””\v””\f””\r”””

\S

匹配一个非空白字符

\w

匹配一个单词字符,包括任意一个字母或数字或下划线,即A~Za~z,0~9,中任意一个

\W

匹配一个非单词字符

\n

n个反向引用。例如、\1\2

正则表达式中的量词

量词

含义

E

匹配0次或者1次,表明E是可选的,E?等价于E{0,1}

E+

匹配1次或者多次,E+等价于E{1,}

E*

匹配0次或者多次,等价于E{0,}

E{n}

匹配n次,等价于E{n,n}

E{n,}

匹配至少n

E{,m}

匹配之多m次,等价于E{0,m}

E{n,m}

匹配之多n次,至多m

正则表达式中的断言

断言

含义

^

标志着字符串的开始。如果要匹配”^”就要使用”\\”

$

标志着字符串的结尾。如果要匹配”$”就要使用”\\$”

\b

一个单词的边界

\B

一个非单词的边界,当”\b”false,它为true

(?=E)

表达式后面经跟着E才匹配。

?!E

表达式后面没有经跟着E才匹配。

通配符

字符

含义

c

任意字符,表示字符本身

?

匹配任意一个字符,类似于regexp中的”.”

*

匹配0个或者多个任意的字符,类似于regexp中的”. *”

[...]

在方括号中的字符集,与regexp中的类似

正则表达式语法

常量

描述

QRegExp::ReExp

类似于Perl的模式匹配语法,这个是默认语法

QRegExp::ReExp2

类似于RegExp,不过时一种贪婪匹配语法

QRegExp::Wildcard

一种简单的模式匹配语法

QRegExp::WildcardUnix

Widcard类似,但是使用Unix shell的行为

QRegExp::FixedString

使用字符原意,不使用任何的转义字符

QRegExp::W3CXmlSchema11

W3C XML Schenma 1.1规范中定义的一种正则表达式

文本捕获:

regexp中使用括号可以使一些元素组合在一起,这样既可以对它们进行量化,也可以捕获它们。

 

新的QRegularExpression:

QRegularExpression中,一个正则表达式由俩部分构成:

  1. 一个模式字符串;
  2. 一组模式选项,模式选项用来更改字符串的含义;

模式选项

常量

描述

QRegularExpression::NoPatternOption

没有设置模式选项

QRegularExpression::CaseInsensitiveOption

 

匹配目标字符串时,不区分大小写

QRegularExpression::DotMatchesEverythingOption

 

“.”匹配任意字符,包括换行符

QRegularExpression::MultilineOption

 

“”匹配字符串的开始和新航的开始,”$”匹配任意行的结尾

QRegularExpression::ExtendedPatternSyntaxOption

 

忽略所有空白,”#”后面的内容作为注释(可用换行符结束注释),用于提高可读性

QRegularExpression::InvertedGreedinessOption

 

反转量词的贪婪

QRegularExpression::DontCaptureOption

 

本命名捕获组不捕获子字符串、命名捕获组正常执行

QRegularExpression::UseUnicodePropertiesOption

 

\w\d等字符类不再只匹配ASCII字符,而是匹配相应Unicode属性的任意字符

QRegularExpression::OptimizeOnFirstUsageOption

 

正则表达式在第一次使用时被优化,而不再是用几次之后才优化

QRegularExpression::DontAutomaticallyOptimizeOption

 

正则表达式默认在使用一定次数后会自动优化,使用该选项可以防止此类优化,这样就可以避免CPU和内存使用率出现不可预测的峰值

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值