当前位置:网站首页>regular expression
regular expression
2022-08-01 19:31:00 【You're still there when you come back from the army】
正则表达式,又称规则表达式,是一种文本模式,正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串,通常被用来检索、替换那些符合某个模式(规则)的文本.
特殊字符:
\
将下一个字符标记符、或一个向后引用、或一个八进制转义符.
^
匹配输入字行首.
$
匹配输入行尾.
*
匹配前面的子表达式任意次.
+
匹配前面的子表达式一次或多次(大于等于1次).
?
匹配前面的子表达式零次或一次.
{
n}
n是一个非负整数.匹配确定的n次.
?
当该字符紧跟在任何一个其他限制符(*,+,?,{
n},{
n,},{
n,m})后面时,匹配模式是非贪婪的.非贪婪模式尽可能少地匹配所搜索的字符串,而默认的贪婪模式则尽可能多地匹配所搜索的字符串.
.点
匹配除“\n”和"\r"之外的任何单个字符.
(?<=pattern)
非获取匹配,反向肯定预查,与正向肯定预查类似,只是方向相反.例如,“(?<=95|98|NT|2000)Windows”能匹配“2000Windows”中的“Windows”,但不能匹配“3.1Windows”中的“Windows”.
*python的正则表达式没有完全按照正则表达式规范实现,所以一些高级特性建议使用其他语言如java、scala等
(?<!pattern)
非获取匹配,反向否定预查,与正向否定预查类似,只是方向相反.例如“(?<!95|98|NT|2000)Windows”能匹配“3.1Windows”中的“Windows”,但不能匹配“2000Windows”中的“Windows”.
*python的正则表达式没有完全按照正则表达式规范实现,所以一些高级特性建议使用其他语言如java、scala等
x|y
匹配x或y.例如,“z|food”能匹配“z”或“food”(此处请谨慎).“[z|f]ood”则匹配“zood”或“food”.
[xyz]
字符集合.匹配所包含的任意一个字符.例如,“[abc]”可以匹配“plain”中的“a”.
[^xyz]
负值字符集合.匹配未包含的任意字符.例如,“[^abc]”可以匹配“plain”中的“plin”任一字符.
[a-z]
字符范围.匹配指定范围内的任意字符.例如,“[a-z]”可以匹配“a”到“z”范围内的任意小写字母字符.
注意:只有连字符在字符组内部时,并且出现在两个字符之间时,才能表示字符的范围; 如果出字符组的开头,则只能表示连字符本身.
[^a-z]
负值字符范围.匹配任何不在指定范围内的任意字符.例如,“[^a-z]”可以匹配任何不在“a”到“z”范围内的任意字符.
\b
匹配一个单词的边界,也就是指单词和空格间的位置(即正则表达式的“匹配”有两种概念,一种是匹配字符,一种是匹配位置,这里的\b就是匹配位置的).
\B
匹配非单词边界.
\d
匹配一个数字字符.等价于[0-9].grep 要加上-P,perl正则支持
\D
匹配一个非数字字符.等价于[^0-9].grep要加上-P,perl正则支持
\f
匹配一个换页符.等价于\x0c和\cL.
\n
匹配一个换行符.等价于\x0a和\cJ.
\r
匹配一个回车符.等价于\x0d和\cM.
\s
匹配任何不可见字符,包括空格、制表符、换页符等等.等价于[ \f\n\r\t\v].
\S
匹配任何可见字符.等价于[^ \f\n\r\t\v].
\t
匹配一个制表符.等价于\x09和\cI.
\v
匹配一个垂直制表符.等价于\x0b和\cK.
\w
匹配包括下划线的任何单词字符.类似但不等价于“[A-Za-z0-9_]”,这里的"单词"字符使用Unicode字符集.
\W
匹配任何非单词字符.等价于“[^A-Za-z0-9_]”.
\n
标识一个八进制转义值或一个向后引用.如果\n之前至少n个获取的子表达式,则n为向后引用.否则,如果n为八进制数字(0-7),则n为一个八进制转义值.
\p{
P}
小写 p 是 property 的意思,表示 Unicode 属性,用于 Unicode 正表达式的前缀.中括号内的“P”表示Unicode 字符集七个字符属性之一:标点字符.
其他六个属性:
L:字母;
M:标记符号(一般不会单独出现);
Z:分隔符(比如空格、换行等);
S:符号(比如数学符号、货币符号等);
N:数字(比如阿拉伯数字、罗马数字等);
C:其他字符.
*注:此语法部分语言不支持,例:javascript.
\<
\>
匹配词(word)的开始(\<)和结束(\>).例如正则表达式\<the\>能够匹配字符串"for the wise"中的"the",但是不能匹配字符串"otherwise"中的"the".注意:这个元字符不是所有的软件都支持的.
( )
将( 和 ) 之间的表达式定义为“组”(group),并且将匹配这个表达式的字符保存到一个临时区域(一个正则表达式中最多可以保存9个),它们可以用 \1 到\9 的符号来引用.
|
将两个匹配条件进行逻辑“或”(or)运算.例如正则表达式(him|her) 匹配"it belongs to him"和"it belongs to her",但是不能匹配"it belongs to them.".注意:这个元字符不是所有的软件都支持的
正则表达式应用——实例应用
1.验证用户名和密码:
("^[a-zA-Z]\w{5,15}$")正确格式:"[A-Z][a-z]_[0-9]"组成,并且第一个字必须为字母6~16位;
2.验证电话号码:
("^(\d{3,4}-)\d{7,8}$")正确格式:xxx/xxxx-xxxxxxx/xxxxxxxx;
3.验证手机号码(包含虚拟号码和新号码段):
"^1([38][0-9]|4[5-9]|5[0-3,5-9]|66|7[0-8]|9[89])[0-9]{8}$";
4.验证身份证号(15位):
"\d{14}[[0-9],0-9xX]",(18位):"\d{17}(\d|X|x)";
5.验证Email地址
:("^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$");
6.只能输入由数字和26个英文字母组成的字符串:
("^[A-Za-z0-9]+$");
7.整数或者小数:
^[0-9]+([.][0-9]+){
0,1}$
8.只能输入数字:
"^[0-9]*$".
9.只能输入n位的数字:
"^\d{n}$".
10.只能输入至少n位的数字:
"^\d{n,}$".
11.只能输入m~n位的数字:
"^\d{m,n}$".
12.只能输入零和非零开头的数字:
"^(0|[1-9][0-9]*)$".
13.只能输入有两位小数的正实数:
"^[0-9]+(\.[0-9]{2})?$".
14.只能输入有1~3位小数的正实数:
"^[0-9]+(\.[0-9]{1,3})?$".
15.只能输入非零的正整数:
"^\+?[1-9][0-9]*$".
16.只能输入非零的负整数:
"^\-[1-9][0-9]*$".
17.只能输入长度为3的字符:
"^.{3}$".
18.只能输入由26个英文字母组成的字符串:
"^[A-Za-z]+$".
19.只能输入由26个大写英文字母组成的字符串:
"^[A-Z]+$".
20.只能输入由26个小写英文字母组成的字符串:
"^[a-z]+$".
21.验证是否含有^%&',;=?$\"等字符: "[%&',;=?$\\^]+". 22.只能输入汉字: "^[\u4e00-\u9fa5]{
0,}$". 23.验证URL: "^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$". 24.验证一年的12个月: "^(0?[1-9]|1[0-2])$"正确格式为:"01"~"09"和"10"~"12". 25.验证一个月的31天: "^((0?[1-9])|((1|2)[0-9])|30|31)$"正确格式为;"01"~"09"、"10"~"29"和“30”~“31”.
26.获取日期正则表达式:
\\d{
4}[年|\-|\.]\d{
\1-\12}[月|\-|\.]\d{
\1-\31}日?
评注:可用来匹配大多数年月日信息.
27.匹配双字节字符(包括汉字在内):
[^\x00-\xff]
评注:可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)
28.匹配空白行的正则表达式:
\n\s*\r
评注:可以用来删除空白行
Linux匹配次数
1,***** 匹配前面的字符任意次,包括0次,In the greed mode,尽可能多的进行匹配
2,?匹配前面的字符0次或者1次
3,+ 匹配前面的字符至少1次
4,{n} 匹配前面的字符n次
5,{m,n}匹配前面的字符至少m次,至多n次
6,{,n} 匹配前面的字符至多n次
7,{n,}匹配前面的字符至少n次
边栏推荐
- 内网穿透 lanproxy部署
- {ValueError}Number of classes, 1, does not match size of target_names, 2. Tr
- 【蓝桥杯选拔赛真题47】Scratch潜艇游戏 少儿编程scratch蓝桥杯选拔赛真题讲解
- ExcelPatternTool: Excel表格-数据库互导工具
- Creo5.0草绘如何绘制正六边形
- How to record and analyze your alchemy process - use notes of the visual artifact Wandb [1]
- Multi-Party Threshold Private Set Intersection with Sublinear Communication-2021: Interpretation
- 有点奇怪!访问目的网址,主机能容器却不行
- 文库网站建设源码分享
- Ha ha!A print function, quite good at playing!
猜你喜欢

网络不通?服务丢包?这篇 TCP 连接状态详解及故障排查,收好了~
![[pyqt5] Custom controls to achieve scaling sub-controls that maintain the aspect ratio](/img/99/34f223614449fcee8e9322dff2e839.png)
[pyqt5] Custom controls to achieve scaling sub-controls that maintain the aspect ratio

GZIPOutputStream 类源码分析

Become a Contributor in 30 minutes | How to participate in OpenHarmony's open source contributions in multiple ways?

Shell script topic (07): file from cfs to bos

从普通进阶成优秀的测试/开发程序员,一路过关斩将

From ordinary advanced to excellent test/development programmer, all the way through

Keras深度学习实战——交通标志识别

win10,在proe/creo中鼠标中键不能放大缩小

Win11如何删除升级包?Win11删除升级包的方法
随机推荐
正则表达式
MySQL中超键、主键及候选键的区别是什么
【pyqt5】自定义控件 实现能够保持长宽比地缩放子控件
MySQL你到底都加了什么锁?
Risc-v Process Attack
[Neural Network] This article will take you to easily analyze the neural network (with an example of spoofing your girlfriend)
BN BatchNorm + BatchNorm的替代新方法KNConvNets
重保特辑|筑牢第一道防线,云防火墙攻防演练最佳实践
PHP 安全最佳实践
How to record and analyze your alchemy process - use notes of the visual artifact Wandb [1]
Mobile Zero of Likou Brush Questions
log factory (detail)
锐捷交换机基础配置
手撸代码,Redis发布订阅机制实现
What are the application advantages of SaaS management system?How to efficiently improve the digital and intelligent development level of food manufacturing industry?
Redis的内存淘汰策略和过期删除策略的区别是什么
nacos安装与配置
开源视界 | StreamNative 盛宇帆:和浪漫的人一起做最浪漫的事
数据库系统原理与应用教程(070)—— MySQL 练习题:操作题 101-109(十四):查询条件练习
通配符 SSL/TLS 证书