正则表达式:
正则表达式就是在一个文本中匹配子字符串的一种模式(pattern),它可以简写为regexp。一个regexp主要应用在以下几个方面:
- 验证。regexp可以测试一个子字符串是否符合一些规范。
- 搜索。regexp提供了比简单字符串匹配更强大的模式匹配。
- 查找和替换。regexp可以使用一个不同的字符串替换所有匹配的子字符串。
- 字符串分割。regexp可以识别在哪里进行字符串分割。
Regexps由表达式、量词和断言组成。
正则表达式中的字符和字符集缩写
|
元素 |
含义 |
|
c |
一个字符代表它本身,除非这个字符有特殊的regexp含义。 |
|
\c |
跟在反斜杠后面的字符匹配字符本身,但是本表中下面指定的这些字符除外。 |
|
\a |
匹配ASCII的振铃(BEL,0x07) |
|
\f |
匹配ASCII的换页(FF,0x0C) |
|
\n |
匹配ASCII的换行(LF,0x0A) |
|
\r |
匹配ASCII的回车(CR,0x0D) |
|
\t |
匹配ASCII的水平制表符(HT,0x09) |
|
\v |
匹配ASCII的垂直制表符(VT,0x0B) |
|
\xhhhh |
匹配Unicode字符对应的十六进制数hhhh(0x0000~0xFFFF之间) |
|
\0ooo |
匹配八进制ASCII/Latin1字符ooo(在0~377之间) |
|
.(点) |
匹配任意字符(包括新航) |
|
\d |
匹配一个数字 |
|
\D |
匹配一个非数字 |
|
\s |
匹配额一个空白字符,包括”\t”、”\n”、”\v”、”\f”、”\r”和”” |
|
\S |
匹配一个非空白字符 |
|
\w |
匹配一个单词字符,包括任意一个字母或数字或下划线,即A~Z,a~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中,一个正则表达式由俩部分构成:
- 一个模式字符串;
- 一组模式选项,模式选项用来更改字符串的含义;
模式选项
|
常量 |
描述 |
|
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和内存使用率出现不可预测的峰值 |

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

被折叠的 条评论
为什么被折叠?



