0
点赞
收藏
分享

微信扫一扫

编程笔记 html5&css&js 060 css响应式布局

静守幸福 2024-01-31 阅读 9

1.正则表达式的定义:

2.正则表达式的分类:

正则表达式根据从POSIX BRE或者POSIX ERE标准可以分为:

可以使用:
man 7 regex
(可以使用 man手册帮助)

3.文本三剑客(grep  sed  awk)支持的正则表达式:

shell是不支持正则表达式的(shell支持的是通配符)。shell中的正则表达式只有个别命令支持的,一般常用的是文本三剑客。

支持正则的shell命令正则类型
grep默认使用基本正则表达式(BRE)(要使用扩展正则需要加转义字符)
sed 默认使用基本正则表达式(BRE)
awk 使用扩展正则表达式(ERE)
egrep 或 grep -E使用扩展的正则表达式(ERE)

 4.基本正则表达式:

元字符含义及用法
表示转义字符,去掉特殊符号的特殊含义
匹配任意单个字符
^ 匹配字符串开头的位置
$  匹配字符串末尾的位置
*  匹配前面的字符出现0~+∞
[list]  匹配list列表中的一个字符(列表中只要有一个符合即可)
[^list]   匹配任意非list列表中的一个字符
{n} 匹配前面的子表达式n次
{n,} 匹配前面的子表达式最少n次
{,n}匹配前面的子表达式最多n次
{n,m} 匹配前面的子表达式n到m次
[ ] 代表单个字符
\? 1次或0次
^$   空行
.*  1~+∞

4.1转义字符的运用:

将特殊含义的字符转换为普通字符的含义:

被转义的特殊字符转义前的含义作用
\ =具有赋值的作用,或则进行字符判断
\ !取反
\ &单个&符可以将命令挂在后台上,两个是逻辑符号且的作用
\ $取值变量的作用

将普通字符转换为特殊作用的字符:

被赋予新含义的普通字符现在拥有的作用
\n 换行
\t转化为制表符
\w(小写)匹配包括下划线的任何单词字符
\W(大写)匹配任何非单词字符。等通于"[^A-Za-z0-9_]"
\r转换后是回车符
\d匹配一个数字字符
\D匹配一个非数字字符。等价于[^0-9]
\s(小写)空白符
\S(大写)  非空白符

4.2.中括号表达式:

普通中括号包围的字符组,表示某个单个字符匹配中括号内的任意字符即匹配成功

  1. x[abc]z : 可以匹配包含“xaz”、“xbz”、“xcz”的字符串
  2. 取反表示法: 中括号内开头使用 ^ ,表示只要不是中括号内的字符就匹配   

 x[ ^abc]z : 可以匹配包含 “xdz”、“xez” 等字符串,但不能匹配包含“xaz”、“xbz”、“xcz”的字符串 

特殊元字符在中括号中匹配:

  • 想要在中括号中匹配: ^ ,需要将其放在 中括号非开头的位置 ,如:[a^]
  • 想要在中括号中匹配: - ,需要将其放在 开头位置或结尾位置 ,如:[abc-]、[-abc]
  • 想要在中括号中匹配: ] ,需要将其放在 开头位置 ,如:[]abc]

 位置匹配:

字符类:

[:alnum:]  字母和数字
[:alpha:] 代表任何英文大小写字母 A-Z  a-z
[:lower:]   小写字母
[:upper:] 大写字母
[:blank:]空白字符
[:space:] 包括空格、制表符 (水平和垂直)、换行符、回车符等各种类型的空白,比[:blank:]包含的范围广
[:cntrl:] 不可打印的控制字符(退格、删除、警铃...)
[:digit:] 十进制数字
[:xdigit:]十六进制数字
[:graph:] 可打印的非空白字符
[:print:]  可打印字符
[:punct:] 标点符号

量词:
\{m\} : 表示匹配前一个字符或前一个子表达式m次

\{m,n\} : (m<n)表示匹配前一个字符或前一个字表达式最少m次,最多n次

\{m,\} : 表示匹配前一个字符或前一个子表达式至少m次

\{,n\} : 表示匹配前一个字符或前一个字表达式最多n次(匹配0次也算是成功)

*  表示前一个字符或前一个子表达式匹配0次或多次,等价于:{0,}

.*   匹配任意长度的任意字符

5.扩展正则表达式的元字符:

egrep 默认使用的 是扩张正则

支持的工具:egrepawk,注意:使用grep要配合-E或者-P使用,sed要配合-r使用。
 

元字符含义及用法
+   匹配前面子表达式1次以上,例: go+d,将匹配至少一个o,如god、good、goood等
 匹配前面子表达式0次或者1次,例: go?d,将匹配gd或god
()   将括号中的字符串作为一个整体,例1: g(oo)+d,将匹配oo整体1次以上,如good、gooood等

 以或的方式匹配字符串,例:g(oo|la)d,将匹配good或者 glad

*匹配前面字符任意次
{n}匹配n次
{m,n}至少m,至多n次

扩展常用的量词:

  • +  表示匹配前一个字符或前一个子表达式1或多次,即至少一次 等价于 {1, }
  • ?  表示匹配前一个字符或前一个子表达式0或1次,等价于 {0,1} 等价于 {,1}

分组捕获和反向引用:
使用小括号()包围一部分正则表达式,这部分正则表达式即成为一个分组整体,也称为一个子表达式。

分组后可以使用 \N 来反向引用对应的分组匹配结果,N是1-9的正整数,\1表示第一个分组表达式的匹配结果,\2表达第二个分组表达式的匹配结果。

注意:反向引用引用的是分组匹配后的结果,不是分组表达式

例如:正则表达式:(abc|def) and \1xyz 可以匹配字符串“abc and abcxyz ” 或“def and defxyz”,但是不能匹配“abc and defxyz” 或 “def and abcxyz”

举报

相关推荐

0 条评论