当前位置:网站首页>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次
边栏推荐
- ExcelPatternTool: Excel表格-数据库互导工具
- Hardware Bear Original Collection (Updated 2022/07)
- CMake教程——Leeds_Garden
- Gradle系列——Gradle文件操作,Gradle依赖(基于Gradle文档7.5)day3-1
- 在表格数据上,为什么基于树的模型仍然优于深度学习?
- Become a Contributor in 30 minutes | How to participate in OpenHarmony's open source contributions in multiple ways?
- 安徽建筑大学&杭州电子科技大学|基于机器学习方法的建筑可再生能源优化控制
- shell脚本专题(07):文件由cfs到bos
- 安装GBase 8c数据库的时候,报错显示“Resource:gbase8c already in use”,这怎么处理呢?
- What are the application advantages of SaaS management system?How to efficiently improve the digital and intelligent development level of food manufacturing industry?
猜你喜欢

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

明尼苏达大学团队结合高通量实验与机器学习,实现有效可预测的特定位点重组过程,可调节基因编辑速度

【蓝桥杯选拔赛真题47】Scratch潜艇游戏 少儿编程scratch蓝桥杯选拔赛真题讲解

nacos安装与配置

Combining two ordered arrays

Website construction process

【木棉花】#夏日挑战赛# 鸿蒙小游戏项目——数独Sudoku(3)

log factory (detail)

Compse编排微服务实战

GZIPOutputStream 类源码分析
随机推荐
ExcelPatternTool: Excel表格-数据库互导工具
Website construction process
Win11校园网无法连接怎么办?Win11连接不到校园网的解决方法
数据库系统原理与应用教程(072)—— MySQL 练习题:操作题 121-130(十六):综合练习
小白系统初始化配置资源失败怎么办
[Kapok] #Summer Challenge# Hongmeng mini game project - Sudoku (3)
明尼苏达大学团队结合高通量实验与机器学习,实现有效可预测的特定位点重组过程,可调节基因编辑速度
把 Oracle 数据库从 RAC 集群迁移到单机环境
30分钟成为Contributor|如何多方位参与OpenHarmony开源贡献?
Write code anytime, anywhere -- deploy your own cloud development environment based on Code-server
MLX90640 Infrared Thermal Imager Temperature Measurement Module Development Notes (Complete)
首篇 NLP 领域图神经网络综述:127 页,从图构建到实际应用面面观
PHP 安全最佳实践
kubernetes - deploy nfs storage class
使用常见问题解答软件的好处有哪些?
mysql自增ID跳跃增长解决方案
1个小时!从零制作一个! AI图片识别WEB应用!
对于web性能优化我有话说!
Keras deep learning practice - traffic sign recognition
在GBase 8c数据库后台,使用什么样的命令来对gtm、dn节点进行主备切换的操作?