正则表达式

相信大家都知道见过正则表达式,但什么是正则表达式嘞?
正则表达式就是用于描述一组字符串特征的模式,用来匹配特定的字符串。通过 特殊字符+普通字符来进行模式描述,从而达到文本匹配目的工具。
正则表达式目前被集成到了各种文本编辑器/文本处理工具当

正则表达式的分类:

  • 基本的正则表达式(Basic Regular Expression 又叫 Basic RegEx 简称 BREs)
  • 扩展的正则表达式(Extended Regular Expression 又叫 Extended RegEx 简称 EREs)
  • Perl 的正则表达式(Perl Regular Expression 又叫 Perl RegEx 简称 PREs)

注:本文采用grep工具进行验证(grep采用贪婪匹配,匹配当前行中所有的匹配内容)

grep -E: 使用扩展正则匹配
grep --color: 将匹配的到内容进行语法高亮
正则表达式的基本要素大致可以分为如下几种:

一、字符类
(1). 匹配任意一个字符
(2)[ ] 匹配括号中的任意一个字符
(3)- 在[ ]括号内表示字符范围
(4)^ 位于[ ]括号内的开头,匹配除括号中的字符之外的任意一个字符
(5)[ [ :xxx:] ] grep工具预定义的一些命名字符类
例如:[[:alpha:]]匹配一个字母;[[:digit:]]匹配一个数字
这里写图片描述
二、数量限定符
(1)? 紧跟在它前面的单元应匹配零次或一次
(2)+ 紧跟在它前面的单元应匹配一次或多次
(3)* 紧跟在它前面的单元应匹配零次或多次
(4){N} 紧跟在它前面的单元应精确匹配N次
(5){N,} 紧跟在它前面的单元应匹配至少N次
(6){,M]} 紧跟在他前面的单元应匹配最多M次
(7){N,M} 紧跟在它前面的单元应匹配至少N次,最多M次
注意点:上述的“前面的单元”指的就是“?前面的字符”;具体可见下图所示例子
这里写图片描述
三、 位置限定符
(1)^ 匹配行首的位置
(2)$ 匹配行末的位置
(3)\< 匹配单词开头的位置
(4)> 匹配单词结尾的位置
(5)\b 匹配单词开头或结尾的位置
(6)\B 匹配非单词开头和结尾的位置

四、特殊字符
(1)\ 转义字符,普通字符转义为特殊字符,特殊字符转义为普通字符
(2)( ) 将正则表达式的一部分括起来组成一个单元,可以对整个单元使用数量限定符
(3)| 连接两个子表达式,表示或的关系

五、其它常用通用字符集及其替换
这里写图片描述
注意点:这些符号可以来简化正则表达式的填写(恰当的使用)

六、小练习
(1)手机号码

grep -E --color '^1[35789][0-9]{9}$' file

这里写图片描述
(2)非零的正整数

grep -P --color '^(\+)[1-9]\d*$|^[1-9]\d*$' file
grep -P --color '^\+?[1-9]*$' file

注意点:
    grep 支持:BREs、EREs、PREs 正则表达式
           grep 指令后不跟任何参数,则表示要使用 ”BREs“ 
           grep 指令后跟 ”-E" 参数,则表示要使用 “EREs“ 
           grep 指令后跟 “-P" 参数,则表示要使用 “PREs"

这里写图片描述
(3)非零开头的最多带两位小数的数字

grep -E --color '^[1-9][0-9]*\.[0-9]{1,2}$' file
grep -E --color '(^[1-9][0-9]*)+(.[0-9]{1,2})$?' file

这里写图片描述
(4)由数字和26个英文字母组成的字符串

grep -E --color '^[0-9a-zA-Z]+$' file

这里写图片描述
(5)腾讯QQ号(QQ号从10000开始)

假设QQ号最短5位,最长10位
grep -E --color '^[1-9][0-9]{4,9}$' file

这里写图片描述
(6)IP地址

grep -E --color '^[1-9][0-9]{1,2}/.[0-9]{1,2}{3}$' file
grep -E --color '\d+\.\d+\.\d+\.\d+' file
感觉这个写的不是很好,希望大神们能给出更好的方法,让我这个菜鸟学习学习

(7)即匹配电话号码又匹配腾讯账号

grep -E --color '^1[35789][0-9]{9}$|^[1-9][0-9]{4,9}$' file

(8)账号是否合法(字母开头,允许5-16字节,允许字母数字下划线)

grep -E --color '^[a-zA-Z][0-9a-zA-Z_)]{4,15}$' file
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值