正则是什么意思(正则表达式)
正则是什么意思(正则表达式)
写在开篇
不知道你们有没有过这样的经历:我们去某些网站注册帐号,当你在设置密码的时候,网站会提示你密码的长度范围,以及对应的规则限制,现在假设我们不知道正则表达式,作为程序员,该如何去实现这样一个密码验证呢?关于正则表达式一直都是个让很多我们都觉得很郁闷的一个东西,觉得创造正则表达式的那个家伙简直就是个奇葩,
了解什么是正则表达式?
正则表达式是?组由字?和符号组成的特殊?本,它可以?来从?本中找出满?你想要的格式的句?
正则表达式可以从?个基础字符串中根据?定的匹配模式替换?本中的字符串、提取字符串等。
正则表达式的分类
在 Linux 和 OS X 下,常见的正则表达式,至少有以下三种:
基本的正则表达式(Basic Regular Expression 又叫 Basic RegEx 简称 BREs)
扩展的正则表达式(Extended Regular Expression 又叫 Extended RegEx 简称 EREs)Perl 的正则表达式(Perl Regular Expression 又叫 Perl RegEx 简称 PREs)
Linux/OS X 下常用命令与正则表达式的关系
命令
正则表达式特定
grep
支持 BREs、EREs、PREs 正则表达式
1. 指令后不跟任何参数, 则表示要使用 “BREs”
2. grep 指令后跟 ”-E” 参数, 则表示要使用 “EREs”;
3. grep 指令后跟 “-P” 参数, 则表示要使用 “PREs”。
egrep
支持 EREs、PREs 正则表达式
1. egrep 指令后不跟任何参数, 则表示要使用 “EREs”;
2. egrep 指令后跟 “-P” 参数, 则表示要使用 “PREs”。
sed
支持 BREs、EREs
1. sed 指令默认是使用 “BREs”;
2. sed 指令后跟 “-r” 参数 , 则表示要使用“EREs”。
awk
支持 EREs,并且默认使用 “EREs”
sed 正则表达式特点
sed 功能与作用
sed 处理的对象:文本文件sed 处理操作:对文本文件的内容进行 — 查找、替换、删除、增加等操作sed 在处理文本文件的时候,也是按行处理的
awk 正则表达式特点
awk 处理的对象:文本文件awk 处理操作:主要是对列进行操作
元字符
正则表达式主要依赖于元字符
正则表达式
描述
示例
\b
单词边界
\bcool\b匹配cool,不匹配coolant
\B
非单词边界
cool\B匹配coolant不匹配cool
\d
单个数字字符
b\db匹配b2b,不匹配bcb
\D
单个非数字字符
b\Db匹配bcb不匹配b2b
\w
单个单词字符(字母,数字与_)
\w匹配1或a,不匹配&
\W
单个非单词字符
\W匹配&,不匹配1或a
\n
换行符
\n匹配一个新行
\s
单个空白字符
x\sx匹配xx,不匹配xx
\S
单个非空白字符
x\S\x匹配xkx,不匹配xx
\r
回车
\r匹配回车
\t
横向制表符
\t匹配一个横向制表符
\v
垂直制表符
\v匹配一个垂直制表符
\f
换页符
\f匹配一个换页符
基本正则表达式
字符
描述
^
^word搜索以word开头的内容
$
word$搜索以word结尾的内容
^$
表示空行,不是空格
.
代表且只能代表任意一个字符(不匹配空行)
\
转义字符,让有特殊含义的字符脱掉马甲,现出原形,如.只表示小数点
*
重复之前的字符或文本0个或多个,之前的文本或字符连续0次或多次
.*
任意多个字符
^.*
以任意多个字符串开头,.*尽可能多,有多少算多少,贪婪性
括号表达式
[abc][0- 9][.,/]
匹配字符集合内的任意一个字符a或b或c:[a-z]匹配所有小写字母;表示一个整 体,内藏无限可能;[abc]找a或b或c可以写成[a-c]
[^abc]
匹配不包含后的任意字符a或b或c,是对[abc]的取反,且与含义不同
a{n,m}
重复前面a字符n到m次(如果用egrep或sed -r可去掉斜线)
a{n,}
重复前面a字符至少n次,如果用egrep或sed -r可去掉斜线
a{n}
重复前面a字符n次,如果用egrep或sed -r可去掉斜线
扩展正则表达式ERE
特殊字符
描述
+
重复前一个字符一次或一次以上,前一个字符连续一个或多个,把连续的文本/ 字符取出
?
重复前面一个字符0次或1次(.是有且只有1个)
()
分组过滤被括起来的东西表示一个整体(一个字符),后向引用
懒惰匹配和贪婪匹配
贪婪匹配:正则表达式中包含重复的限定符时,通常的行为是匹配尽可能多的字符。
懒惰匹配,有时候需要匹配尽可能少的字符。
如果: A.*B,它将会匹配最长的以A开始,以B结束的字符串。那用它来搜索AABAB的话,它会匹配整个字符串AABAB。我们可能需要匹配的是AB这样的话就需要用到懒惰匹配了。
代码/语法
描述
*?
重复任意次,但尽可能少重复
+?
重复1次或更多次,但尽可能少重复
??
重复0次或1次,但尽可能少重复
{n,m}?
重复n到m次,但尽可能少重复
{n,}?
重复n次以上,但尽可能少重复
正则小结
基础正则:BRE
^
$
.
*
.*
[abc]
[^abc]
扩展正则:ERE
+
?
()
{}
a{n,m}
a{n,}
a{n}
转义字符:将字符的意思改变(不支持正则符号的,转变字符含义为正则,支持正则的转变 为普通字符含义)
补充说明
正则表达式
描述
示例
[:alnum:]
[a-zA-Z0-9]匹配任意一个字母或数字字符
[[:alnum:]]+
[:alpha:]
匹配任意一个字母字符(包括大小写字母)
[[:alpha:]]{4}
[:blank:]
空格与制表符(横向纵向)
[[:blank:]]*
[:digit:]
匹配任意一个数字字符
[[:digit:]]?
[:lower:]
匹配小写字母
[[:lower:]]{5,}
[:upper:]
匹配大写字母
([[:upper:]]+)?
[:punct:]
匹配标点符号
[[:punct:]]
[:space:]
匹配一个包括换行符,回车等在内的所有空白符
[[:space:]]+
[:graph:]
匹配任何一个可以看得见的且可以打印的字符
[[:graph:]]
[:xdigit:]
任何一个十六进制数
[[:xdigit:]]+
[:cntrl:]
任何一个控制字符(ASCII字符集中的前32个字符)
[[:cntrl:]]
[:print:]
任何一个可以打印的字符
[[:print:]]
写在最后
学会正则表达式还是有必要的,配合grep,egrep,sed -r,awk更为强大,至少以后你的同事写出来后,不会在脑子里出现 “这是写的啥玩意儿啊?怎么我看不懂呢” 的想法或者同事不会正则表达式就可以牛逼的说,让我来。
本文来自于(喜欢的盆友可以关注哦):https://c.quk.cc/2/b6/q5freaiai3x
-
- 明朝十六位皇帝列表(明朝十六位帝王)
-
2024-01-28 10:22:21
-
- 番禺最好的民办学校排名(番禺区私立学校排名)
-
2024-01-28 10:20:15
-
- 烤箱费电吗一个小时要几度电(烤箱一小时用电多少度)
-
2024-01-28 10:18:09
-
- 中国十大顶尖音乐学院(中国十大顶尖音乐学院排名)
-
2024-01-28 07:01:46
-
- 余额宝一天能转出多少钱(余额宝一天能转出多少钱到银行卡)
-
2024-01-28 06:59:32
-
- 无线路由器网址(无线路由器怎么设置)
-
2024-01-28 06:57:17
-
- 贴在玻璃上的胶纸怎么去除(贴在玻璃上的贴纸胶怎么去除)
-
2024-01-28 06:55:02
-
- 品牌奶粉十大排名(奶粉十大排名有哪些品牌)
-
2024-01-28 06:52:47
-
- 电容器的三大作用(电容器的三大作用是什么)
-
2024-01-28 06:50:33
-
- 怎么让wifi网速变快(怎么让wifi网速变快一点)
-
2024-01-28 06:48:18
-
- 怎么更换银行卡绑定的手机号码(银行卡在手机上怎么更换手机号)
-
2024-01-28 06:46:03
-
- 一个表格占两页怎么弄成一页(文档分成两页了怎么弄成一页)
-
2024-01-28 06:43:49
-
- 小米手机开不了机怎么回事(手机开不了机教你一招修复)
-
2024-01-28 06:41:34
-
- excel跨表复制粘贴不了(明明复制却粘贴不了)
-
2024-01-28 02:17:54
-
- 中国元帅排名(中国元帅排名及省份)
-
2024-01-28 02:15:39
-
- 英国女王能撤了首相吗(英国女王能撤了首相吗)
-
2024-01-28 02:13:24
-
- 手机如何测量距离长度(怎么用手机测量长度)
-
2024-01-28 02:11:10
-
- 光棍节的由来(光棍节的由来是什么)
-
2024-01-28 02:08:55
-
- 超纤皮的优缺点(超纤皮的优缺点鞋子)
-
2024-01-28 02:06:41
-
- 支付宝登录密码忘记了怎么办(支付宝登录密码忘记了怎么办手机号不用了)
-
2024-01-28 02:04:26