正则表达式

目录

正则表达式

1、代表字符

2、表示次数

3、位置锚定

4、分组或其他

或者

扩展正则表达式元字符:(支持的工具:egrep、awk)

实验题:

表示qq号

表示邮箱

表示手机号


shell:/bin/bash

正则表达式:匹配的是文章中的字符

通配符:用来处理文件名 ? 任意单个字符

元字符:不代表本来的含义,在正则表达式中有特殊含义的字符

正则表达式想用好:

自己写容易, 读取别人的正则

1.记忆元字符的含义

2.多用

正则表达式
1、代表字符
字符含义
.单个任意字符,可以是一个汉字
[]指定范围内的任意单个字符
\转义字符,用于取消特殊符号的含义
[:alnum:]字母和数字
[:alpha:]代表任意英文大小写字符
[:lower:]小写字母
[:upper:]大写字母
[:blank:]空白字符(空格和制表符)
[:space:]包括空格、制表符(水平和垂直)、换行符、回车符等各种类型的空白,比[:blank:]包含的范围广
[.]任何元字符放在在方括号里都代表他原来的意思,.在里面意思就是.
[^]匹配指定范围外的任意单个字符,例如0-9匹配任意一位非0-9里的字符

2、表示次数
符号含义
*代表前面的字符出现0到+∞次
.*代表任意长度字符
\?0或1次 可以有也可以无
\ +一次到+∞次
\ {3 \ }前面的字符出现三次
\ {3,5 \ }前面的字符出现3到5次
\ {3, \ }前面的字符最少出现三次
\ {,5 \ }前面的字符最多出现5次
3、位置锚定
字符含义
^代表开头的行
$代表结尾的行
^PATTERN$用于模式匹配整行 (单独一行 只有root)
^$空行
^[[:space:]]*$空白行
\ <代表以什么字符为开头,等同于\b
\ >代表以什么字符为结尾,等同于\b

echo hello-123 |grep "\ <123"

echo hello_123 |grep "\ <123"

echo hello 123 |grep "\ <123"

除了 字母 数字 下划线其他都算 单词的分隔符

4、分组或其他

分组:用括号( )将需要组合的字符括起来,当作一个整体去处理,如(root)+

后向引用:分组括号中的模式匹配到的内容会被正则表达式引擎记录于内部的变量中,这些变量的命名

方式为:\1,\2,\3……分组

\1表示从左侧起第一个左括号以及与之匹配右括号之间的模式所匹配到的字符

或者

或者:\ |

扩展正则表达式元字符:(支持的工具:egrep、awk)
字符含义
+匹配前面子表达式1次以上,例:go+d,将匹配至少一个o,good、gooood、gooooood都可以匹配到
匹配前面子表达式0次或1次,例:go?d,将匹配gd或者god
()将括号中的字符串看作是一个整体,例:g(oo)+d,将匹配oo整体一次以上,如good、goooood等
|以或的方式匹配字符串,例:g(oo|la)d,将匹配good或者glad
实验题:

查找ip地址

筛选出ip地址的四个分段

[0-9]{1,3}\:三位数,每位是0-9的范围

表示qq号

echo "940132245" |grep "\b[0-9]{6,12}\b"

表示邮箱

echo "zhou@qq.com" |grep -E "[[:alnum:]]+@[[:alnum:]]+.[[:alnum:]_]+"

表示手机号

echo "13705173391"|grep -E "\b13456789{9}\b"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值