Shell学习-正则表达式

定位符:同时锚定开头和结尾,做精确匹配;单一锚定开头或结尾或者不锚定的,做模糊匹配。

^ :锚定开头 ^a 以a开头 默认锚定一个字符
$ :锚定结尾 a$ 以a结尾 默认锚定一个字符

匹配符:匹配字符串

. :匹配除回车以外的任意一个字符
( ) :字符串分组
[ ] :定义字符类,匹配括号中的一个字符
[ ^ ] :表示否定括号中出现字符类中的字符,取反。
\ :转义字符
| : 或

e.g.

1)精确匹配  以a开头c结尾  中间任意  长度为三个字节的字符串
[root@zutuanxue ~]# egrep "^a.c$" file 
acc
abc
a_c
aZc
a c
a3c

2)模糊匹配  以cc结尾的字符串   因为$只能锚定单个字符,如果是一个字符串就需要用()来做定义
[root@zutuanxue ~]# egrep "(cc)$" file 
abcc
aabbcc
acc
ccc

3)精确匹配  以a开头c结尾  中间是a-z,0-9  长度为三个字节的字符串
[root@zutuanxue ~]# egrep "^a[a-z0-9]c$" file 
acc
abc
a3c

4)精确匹配  以a开头c结尾  中间不包含a-z,0-9  长度为三个字节的字符串
[root@zutuanxue ~]# egrep "^a[^a-z0-9]c$" file 
a_c
aZc
a c

5)精确匹配  以e开头f结尾  中间是*号  长度为三个字节的字符串  e*f
[root@zutuanxue ~]# egrep "^e\*f$" file 
e*f

6)精确匹配 以a开头b或c结尾  中间是任意  长度为三个字节的字符串
[root@zutuanxue ~]# egrep "^a.(b|c)$" file 
acc
abc
asb
a_c
aZc
a c
a3c

限定符:对前面的字符或者(字符串)出现的次数做限定说明

* :某个字符之后加星号表示该字符不出现或出现多次 a* (ab)*
?:与星号相似,但略有变化,表示该字符出现一次或不出现
+ :与星号相似,表示其前面字符出现一次或多次,但必须出现一次
{n,m} :某个字符之后出现,表示该字符最少n次,最多m次
{m} :正好出现了m次

e.g.

1)精确匹配 以a开头 c结尾 中间是有b或者没有b 长度不限的字符串
[root@zutuanxue ~]# egrep "^ab*c$" file 
ac
abbc
abbbc
abbbbbc
abc

2)精确匹配 以a开头 c结尾 中间只出现一次b或者没有b的字符串
[root@zutuanxue ~]# egrep "^ab?c$" file 
ac
abc

3)精确匹配 以a开头 c结尾 中间是有b且至少出现一次 长度不限的字符串
[root@zutuanxue ~]# egrep "^ab+c$" file 
abbc
abbbc
abbbbbc
abc

4)精确匹配 以a开头 c结尾 中间是有b且至少出现两次最多出现四次 长度不限的字符串
[root@zutuanxue ~]# egrep "^ab{2,4}c$" file 
abbc
abbbc

5)精确匹配 以a开头 c结尾 中间是有b且正好出现三次的字符串
[root@zutuanxue ~]# egrep "^ab{3}c$" file 
abbbc

6) 精确匹配 以a开头 c结尾 中间是有b且至少出现一次的字符串
[root@zutuanxue ~]# egrep "^ab{1,}c$" file 
abbc
abbbc
abbbbbc
abc

正则表达式POSIX字符:posix字符一次只匹配一个范围中的一个字节

[:alnum:] 匹配任意字母字符0-9 a-z A-Z
[:alpha:] 匹配任意字母,大写或小写
[:digit:] 数字 0-9
[:graph:] 非空字符( 非空格控制字符)
[:lower:] 小写字符a-z
[:upper:] 大写字符A-Z
[:cntrl:] 控制字符
[:print:] 非空字符( 包括空格)
[:punct:] 标点符号
[:blank:] 空格和TAB字符
[:xdigit:] 16 进制数字
[:space:] 所有空白字符( 新行、空格、制表符)

e.g.

注意[[ ]]  双中括号的意思:  第一个中括号是匹配符[] 匹配中括号中的任意一个字符,第二个[]是格式 如[:digit:]

1)精确匹配  以a开头c结尾  中间a-zA-Z0-9任意字符  长度为三个字节的字符串
[root@zutuanxue ~]# egrep "^a[[:alnum:]]c$" file
acc
abc
aZc
a3c

2)精确匹配  以a开头c结尾  中间是a-zA-Z任意字符  长度为三个字节的字符串
[root@zutuanxue ~]# egrep "^a[[:alpha:]]c$" file
acc
abc
aZc


3)精确匹配  以a开头c结尾  中间是0-9任意字符  长度为三个字节的字符串
[root@zutuanxue ~]# egrep "^a[[:digit:]]c$" file
a3c

4)精确匹配  以a开头c结尾  中间是a-z任意字符  长度为三个字节的字符串
[root@zutuanxue ~]# egrep "^a[[:lower:]]c$" file
acc
abc


4)精确匹配  以a开头c结尾  中间是A-Z任意字符  长度为三个字节的字符串
[root@zutuanxue ~]# egrep "^a[[:upper:]]c$" file
aZc

5)精确匹配  以a开头c结尾  中间是非空任意字符  长度为三个字节的字符串
[root@zutuanxue ~]# egrep "^a[[:print:]]c$" file
acc
abc
a_c
aZc
a c
a3c

6)精确匹配  以a开头c结尾  中间是符号字符  长度为三个字节的字符串
[root@zutuanxue ~]# egrep "^a[[:punct:]]c$" file
a_c

7)精确匹配  以a开头c结尾  中间是空格或者TAB符字符  长度为三个字节的字符串
[root@zutuanxue ~]# egrep "^a[[:blank:]]c$" file
a c

类似
[root@zutuanxue ~]# egrep "^a[[:space:]]c$" file
a c

8)精确匹配  以a开头c结尾  中间是十六进制字符  长度为三个字节的字符串
[root@zutuanxue ~]# egrep "^a[[:xdigit:]]c$" file
acc
abc
a3c
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
QRegExp是Qt框架中的一个类,用于进行正则表达式的匹配和处理。它提供了多种模式来匹配不同的字符串。其中,QRegExp::RegExp模式提供了一个简单的模式匹配语法,类似于shell的通配符,可以使用字符“\”进行转义。QRegExp::Wildcard模式类似于通配符,但具有Unix shell的行为。QRegExp::FixedString模式是一个固定字符串,相当于在字符串上使用RegExp模式,其中所有元字符都使用escape()进行转义。QRegExp::W3CXmlSchema11模式是由W3C XML架构1.1规范定义的正则表达式。\[1\] 在使用编辑框输入内容时,可以使用QRegExp类的正则表达式来限制用户输入的内容,以避免输入无关信息和防止SQL注入。QRegExp类的正则表达式可以对编辑框的输入内容进行限制和匹配。\[2\] 如果想要匹配特定的单词,可以使用括号将单词组合在一起,例如(mail|letter)。为了强制匹配的开始和结束都在单词的边界上,可以将正则表达式包含在\b单词边界断言中,即\b(mail|letter)\b。这个\b断言在正则表达式中匹配一个位置,而不是一个字符,一个单词的边界是任何的非单词字符,如一个空格、新行,或者一个字符串的开始或结束。\[3\] #### 引用[.reference_title] - *1* [QRegExp(正则表达式)](https://blog.csdn.net/qq_45303986/article/details/127871375)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [【QT学习】QRegExp类正则表达式(一文读懂)](https://blog.csdn.net/qq_59134387/article/details/127182436)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Qt QRegExp 正则表达式](https://blog.csdn.net/m0_73443478/article/details/128483562)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值