Qt5.12实战之正则与QregExp使用

文章详细介绍了正则表达式的各种匹配规则,包括普通字符、转义字符、组合匹配、自定义表达式以及匹配次数的控制。还提到了贪婪模式和勉强模式在匹配中的应用,并给出了多个示例来说明如何使用这些规则进行文本匹配。

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

1.普通字符匹配:

ab+ : 匹配一个a和任意个b 如: ab abb abbbbbb

c : 匹配一个c 如 : abcde 匹配内容: c 匹配开始索引:2 匹配结束索引 3

bcd : 匹配字符串 bcd 如: abcde 匹配内容是: bcd 匹配开始索引是:1 匹配结束索引是:4

2.转换符匹配:

\:转义字符匹配 如: \r \n \t \\ \^ \$ \. 匹配的内容分别是 回车 换行 制表符 \ ^ $ . 这些字符

3.普通字符与转换字符结合匹配:

\$abc : 匹配$abc 如ok$abcok 匹配的内容是 $abc 匹配开始索引是2 匹配结束索引 是6

\d : 匹配任意数字(0~9)

\w : 匹配任意字母,数字或下划线(A~Z,a~z,0~9,_)

\s : 匹配空格,制表符,换页符等空白字符中的任意一个

\. : 匹配除了换行符号(\n)外的任意字符

\d\d : 匹配两个连接出现的数字(0~9任意一个)

如 abc123 匹配内容12 匹配开始索引: 3 匹配结束索引: 5

a.\d : 匹配小写字母a开始后面是一个任意字符(\n除外)最后一个匹配是数字(0~9任意一个)

如 aaa123 匹配到的内容是aa1 匹配开始索引是:1 匹配结束索引是:4

4.自定义匹配表达式:

[ab5@] : 匹配中括号[]内所出现的任意字符 只要字符串中出现 a 或 b 或 5 或 @ 都能匹配成功

如: xxxaxxx bbbbx xkxkxkb klfdjskljflksl5a fldsjlf@dfs12 这些都匹配成功

[abc][bcd] : 匹配中括号[]内所出现的任意字符 如 123ab89 4545bc56 afafabc55 123afdgbcd

[^abc] : 匹配不包含在中括号内的任意字符,也就是字符串不能包含有a,b,c的任何一个字符

如: efccf1 成功 affdf 失败 cb123 失败 c234 失败 b67 失败

[a-f] : 匹配小字母a到f之间的任意一个字母: 如 a122 成功 aaafbc成功 f10成功

[^A-G0-5] : 匹配除了大写A到大写G之间的任意字母,和0到5之间的任意数字外的其它字符,

也就是说不能使用 A B C D E F G 和 0 1 2 3 4 5

5.匹配出现次数

在上面1到4点的基本上加上{n}, n 表示出现匹配的次数

如: abc{2} 匹配成功的 abcabc faccdabcabc

5{5} 匹配成功的 55555 655555 675555577

\w{2} 最少出现两个(字母,数字,下划线) 如: a5_ a5. a_ 5a 5_ 都匹配成功 $5@ 失败

{m,n} : 匹配最少与最少重复出现次数: 如 xg{1,3} 匹配成功 xg xgg xggg都匹配OK

{m,} : 匹配最少重复多少次 如: \d\w{2}\d{3,}

匹配成功: 1a1234 2a234567 6q789687979 1aw123 2qx456 5ex758437957

? : 匹配0次或者1 次 如 a[bc]? 匹配成功 a ab ac

+ : 匹配至少出现1次 相当于{1,} 如o+k 匹配成功: ok ooook ookkkkkkkkk

* : 匹配不出现,或者出现任意次 ,相当于 {0,} 如: \^*b 成功匹配 : "b" "\^^^b"

\d+\.?\d* : 匹配至少出现1次的数字,及出现0次或者1次任意字符(\n除外),和出现或者不出现的数字

如: 1$12.5 \d+ -> 12 \.? -> . 5 -> \d*

go{2,8}gle : 匹配 google goooooooogle

6.抽象意义特殊字符

^ : 表示从字符串的开始地方匹配,不匹配任何字符

$ : 表达从字符串的结尾地主匹配,不匹配任意字符

\b : 匹配一个单调边界,也就是单词与空格之间的位置,不匹配任意字符

如: ^aaa : 从字符串开始位置匹配aaa aaabbbccc 成功 bbbccccaaa 失败 bbbaaaccc 失败

aaa$ : 从字符串结尾位置匹配aaa bbbcccaaa 成功 aaabbbccc失败 cccaaabbb 失败

.\b. : 从单词边界开始匹配,取非单词边界一个任意字符(\n除外) ,

与单词边界一个任意字符(\n除外) 如 : @@@abc -> @@@非单词边界 abc单词边界

所以匹配内容为@a

\bend\b : 匹配单词边界前后 如: testend,okend,end 成功匹配到最后的一个end

| : 使用或匹配 , 左边或者右边匹配成功, 如: YES|NO

匹配成功 : this YES , this NO , this YES or NO

(go\s*)+ : 匹配次数修改 如: Let's go go go 匹配成功 ,匹配内容 go go go

\$(\d+\.?\d*) : 匹配$与小数 如 $12.78 匹配成功 \$ -> $ (\d+\.?\d*) ->匹配小数

7.更多匹配(贪婪模式)与更少匹配(勉强模式):

(d)(\w+) : 匹配d字母后面的一个或者多个字符 如: xxxdxxxd ->dxxxd

(d)(\w+)(d) : 前后匹配d字母,取中间的字符串 如: xxxdxxx dxxxdxxxd

(d)(\w+?) : 匹配d字母后面的一个或者多个字符 如: xxxdxxxd ->dx

(d)(\w+?)(d) : 前后匹配d字母,取中间的字符串 如: dxxxdxxxd ->xxx

<td>(.*)</td> :

匹配所有 <td><p></p>a</td><td><p>b</p></td> => <td><p></p>a</td><td><p>b</p></td>

<td>(.*?)</td> :

至少匹配 <td><p></p>a</td><td><p>b</p></td> => <td><p></p>a</td>

正则引用: 引用()中的表达式匹配到的字符 \1 表示引用第1个括号中内容, \2表示引用第2个括号中内容

('|")(.*?)(\1) 相当于 ('|")(.*?)('|")

(\w)\1{4,} : 表示在一个字母后面至少出现4上相同的字符,相当于 ()\w\w{}4,

如: abccccc -> (\w) -> c \1{4,} -> \w{4,} ->cccc

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

自由软件开发者

有你的鼓励,我会更加努力。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值