首页 > 其他分享 >正则学习笔记

正则学习笔记

时间:2023-12-05 10:57:41浏览次数:37  
标签:字符 匹配 数字 10 zA 笔记 学习 正则 Z0

正则学习笔记

https://www.runoob.com/regexp/regexp-syntax.html

https://blog.csdn.net/weixin_44579563/article/details/119424770 (re.findall与分组_坑)

https://blog.csdn.net/jiangshandaiyou/article/details/100823381

例子

捕捉组详解:https://blog.csdn.net/weixin_39566387/article/details/114175382

#用来匹配开头是空格和结尾是逗号空格的内容
\s([^,]*),\s

#匹配“]”后面的所有值(包括“]”)
](.)*
. - 除换行符以外的所有字符。
^ - 字符串开头。
$ - 字符串结尾。
\d,\w,\s - 匹配数字、字符、空格。
\D,\W,\S - 匹配非数字、非字符、非空格。
[abc] - 匹配 a、b 或 c 中的一个字母。
[a-z] - 匹配 a 到 z 中的一个字母。
[^abc] - 匹配除了 a、b 或 c 中的其他字母。
aa|bb - 匹配 aa 或 bb。
? - 0 次或 1 次匹配。
* - 匹配 0 次或多次。
+ - 匹配 1 次或多次。
{n} - 匹配 n次。
{n,} - 匹配 n次以上。
{m,n} - 最少 m 次,最多 n 次匹配。
(expr) - 捕获 expr 子模式,以 \1 使用它。
(?:expr) - 忽略捕获的子模式。
(?=expr) - 正向预查模式 expr。
(?!expr) - 负向预查模式 expr。
特殊符号 代表意义
[:alnum:] 表示英文大小写字符以及数字
[:alpha:] 表示所有英文字符
[:blank:] 表示空格键以及tab键
[:cntrl:] 表示键盘上面的控制按键:CR\LF\TAB\DEL
[:digit:] 表示数字
[:graph:] 表示出了空格符之外的其他所有按键,对应于[:blank:]
[:lower:] 表示小写英文字符
[:upper:] 表示大写英文字符
[:print:] 表示所有可以打印出来的字符
[:punct:] 表示标点符号:,。?“ ‘ ! # $等
[:space:] 表示任何可以产生空白的字符
[:xdigit:] 表示十六进制的数字类型,因此包括0-9,A-F,a-f的数字与字符
^word 待查找的字符串在行首
word $ 待查找的字符串在行尾
. 表示一定有一个字符;对比bash中的?
\ 转义符,将后面接的特殊符号的特殊意义去除
字符 * 重复零到任意多个前一个RE字符
[list] 字符集合,在[ ]中,仅代表一个待查找的字符
[n1-n2] 字符集合,集合范围:n1与n2之间连续的字符
[^ list] 不是字符集合的意思,反向选择字符集合
{n,m} n/m为数字,表示连续n到m个的前一个RE字符
{n}, 表示连续n个前一个RE字符
{n,},表示连续n个以上前一个RE字符
常用正则表达式
一、校验数字的表达式
数字:^[0-9]*$
n位的数字:^\d{n}$
至少n位的数字:^\d{n,}$
m-n位的数字:^\d{m,n}$
零和非零开头的数字:^(0|[1-9][0-9]*)$
非零开头的最多带两位小数的数字:^([1-9][0-9]*)+(\.[0-9]{1,2})?$
带1-2位小数的正数或负数:^(\-)?\d+(\.\d{1,2})$
正数、负数、和小数:^(\-|\+)?\d+(\.\d+)?$
有两位小数的正实数:^[0-9]+(\.[0-9]{2})?$
有1~3位小数的正实数:^[0-9]+(\.[0-9]{1,3})?$
非零的正整数:^[1-9]\d*$ 或 ^([1-9][0-9]*){1,3}$ 或 ^\+?[1-9][0-9]*$
非零的负整数:^\-[1-9][]0-9"*$ 或 ^-[1-9]\d*$
非负整数:^\d+$ 或 ^[1-9]\d*|0$
非正整数:^-[1-9]\d*|0$ 或 ^((-\d+)|(0+))$
非负浮点数:^\d+(\.\d+)?$ 或 ^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$
非正浮点数:^((-\d+(\.\d+)?)|(0+(\.0+)?))$ 或 ^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$
正浮点数:^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$ 或 ^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$
负浮点数:^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$ 或 ^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$
浮点数:^(-?\d+)(\.\d+)?$ 或 ^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$
校验字符的表达式
汉字:^[\u4e00-\u9fa5]{0,}$
英文和数字:^[A-Za-z0-9]+$ 或 ^[A-Za-z0-9]{4,40}$
长度为3-20的所有字符:^.{3,20}$
由26个英文字母组成的字符串:^[A-Za-z]+$
由26个大写英文字母组成的字符串:^[A-Z]+$
由26个小写英文字母组成的字符串:^[a-z]+$
由数字和26个英文字母组成的字符串:^[A-Za-z0-9]+$
由数字、26个英文字母或者下划线组成的字符串:^\w+$ 或 ^\w{3,20}$
中文、英文、数字包括下划线:^[\u4E00-\u9FA5A-Za-z0-9_]+$
中文、英文、数字但不包括下划线等符号:^[\u4E00-\u9FA5A-Za-z0-9]+$ 或 ^[\u4E00-\u9FA5A-Za-z0-9]{2,20}$
可以输入含有^%&',;=?$\"等字符:[^%&',;=?$\x22]+
禁止输入含有~的字符:[^~]+
三、特殊需求表达式
Email地址:^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$
域名:[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+\.?
含中文域名:[a-zA-Z0-9\u4e00-\u9fa5][-a-zA-Z0-9\u4e00-\u9fa5]{0,62}(?:\.[a-zA-Z0-9\u4e00-\u9fa5][-a-zA-Z0-9\u4e00-\u9fa5]{0,62})+\.?
InternetURL:[a-zA-z]+://[^\s]* 或 ^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$
手机号码:^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$
电话号码("XXX-XXXXXXX"、"XXXX-XXXXXXXX"、"XXX-XXXXXXX"、"XXX-XXXXXXXX"、"XXXXXXX"和"XXXXXXXX):^(\(\d{3,4}-)|\d{3.4}-)?\d{7,8}$
国内电话号码(0511-4405222、021-87888822):\d{3}-\d{8}|\d{4}-\d{7}
电话号码正则表达式(支持手机号码,3-4位区号,7-8位直播号码,1-4位分机号): ((\d{11})|^((\d{7,8})|(\d{4}|\d{3})-(\d{7,8})|(\d{4}|\d{3})-(\d{7,8})-(\d{4}|\d{3}|\d{2}|\d{1})|(\d{7,8})-(\d{4}|\d{3}|\d{2}|\d{1}))$)
身份证号(15位、18位数字),最后一位是校验位,可能为数字或字符X:(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)
帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$
密码(以字母开头,长度在6~18之间,只能包含字母、数字和下划线):^[a-zA-Z]\w{5,17}$
强密码(必须包含大小写字母和数字的组合,不能使用特殊字符,长度在 8-10 之间):^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])[a-zA-Z0-9]{8,10}$
强密码(必须包含大小写字母和数字的组合,可以使用特殊字符,长度在8-10之间):^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$
日期格式:^\d{4}-\d{1,2}-\d{1,2}
一年的12个月(01~09和1~12):^(0?[1-9]|1[0-2])$
一个月的31天(01~09和1~31):^((0?[1-9])|((1|2)[0-9])|30|31)$
钱的输入格式:
有四种钱的表示形式我们可以接受:"10000.00" 和 "10,000.00", 和没有 "分" 的 "10000" 和 "10,000":^[1-9][0-9]*$
这表示任意一个不以0开头的数字,但是,这也意味着一个字符"0"不通过,所以我们采用下面的形式:^(0|[1-9][0-9]*)$
一个0或者一个不以0开头的数字.我们还可以允许开头有一个负号:^(0|-?[1-9][0-9]*)$
这表示一个0或者一个可能为负的开头不为0的数字.让用户以0开头好了.把负号的也去掉,因为钱总不能是负的吧。下面我们要加的是说明可能的小数部分:^[0-9]+(.[0-9]+)?$
必须说明的是,小数点后面至少应该有1位数,所以"10."是不通过的,但是 "10" 和 "10.2" 是通过的:^[0-9]+(.[0-9]{2})?$
这样我们规定小数点后面必须有两位,如果你认为太苛刻了,可以这样:^[0-9]+(.[0-9]{1,2})?$
这样就允许用户只写一位小数.下面我们该考虑数字中的逗号了,我们可以这样:^[0-9]{1,3}(,[0-9]{3})*(.[0-9]{1,2})?$
1到3个数字,后面跟着任意个 逗号+3个数字,逗号成为可选,而不是必须:^([0-9]+|[0-9]{1,3}(,[0-9]{3})*)(.[0-9]{1,2})?$
备注:这就是最终结果了,别忘了"+"可以用"*"替代如果你觉得空字符串也可以接受的话(奇怪,为什么?)最后,别忘了在用函数时去掉去掉那个反斜杠,一般的错误都在这里
xml文件:^([a-zA-Z]+-?)+[a-zA-Z0-9]+\\.[x|X][m|M][l|L]$
中文字符的正则表达式:[\u4e00-\u9fa5]
双字节字符:[^\x00-\xff] (包括汉字在内,可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1))
空白行的正则表达式:\n\s*\r (可以用来删除空白行)
HTML标记的正则表达式:<(\S*?)[^>]*>.*?|<.*? /> ( 首尾空白字符的正则表达式:^\s*|\s*$或(^\s*)|(\s*$) (可以用来删除行首行尾的空白字符(包括空格、制表符、换页符等等),非常有用的表达式)
腾讯QQ号:[1-9][0-9]{4,} (腾讯QQ号从10000开始)
中国邮政编码:[1-9]\d{5}(?!\d) (中国邮政编码为6位数字)
IPv4地址:((2(5[0-5]|[0-4]\d))|[0-1]?\d{1,2})(\.((2(5[0-5]|[0-4]\d))|[0-1]?\d{1,2})){3}

标签:字符,匹配,数字,10,zA,笔记,学习,正则,Z0
From: https://www.cnblogs.com/DumpInfou/p/17876713.html

相关文章

  • HoG / SIFT 学习指北
    本文OI/ACM无关。ExplainHoG原文出处:N.Dalal,andB.Triggs,Histogramsoforientedgradientsforhumandetection,ComputerVisionandPatternRecognition,CVPR2005,GoogleCitations:21911简介Histogramsoforientedgradients(HoG):方向梯度直方图,一种......
  • 机器学习-学习率:从理论到实战,探索学习率的调整策略
    本文全面深入地探讨了机器学习和深度学习中的学习率概念,以及其在模型训练和优化中的关键作用。文章从学习率的基础理论出发,详细介绍了多种高级调整策略,并通过Python和PyTorch代码示例提供了实战经验。关注TechLead,分享AI全维度知识。作者拥有10+年互联网服务架构、AI产品研发......
  • CAN-bus应用笔记:节点篇
    在CAN-bus电路设计中,理论上收发器支持节点数最多可做到110个,但实际应用中往往达不到这个数量。今天我们就来谈谈如何通过合理的CAN-bus总线设计,保证CAN网络中的通讯的可靠性和节点数量。影响CAN总线节点数的因素影响总线节点数的因素有多种,本文我们从满足接收节点的差分电压幅值......
  • Java学习之路(十三)
    Java学习之路(十三)1、Collection集合1.1、数组和集合的区别【理解】相同点都是容器,可以存储多个数据不同点数组的长度是不可变的,集合的长度是可变的数组可以存基本数据类型和引用数据类型集合只能存引用数据类型,如果要存基本数据类型,需要存对应的包装类1.......
  • 笔记本安装linux
    下载桌面版Ubuntu镜像服务器版Ubuntu镜像使用BalenaEtcher制作系统安装盘(1)官方网站下载:点我下载(2)下载完毕软件之后,打开软件,选择我们下载好的系统镜像,以及要制作成安装盘的U盘,点击“制作”按钮,稍等片刻,安装盘就制作完成啦。(3)进行操作系统安装(4)将引导盘插到要安......
  • JVM内存用量的再学习
    JVM内存用量的再学习背景最近解决一个SQLServer的问题耗时很久.最终找到了一个看似合理的问题解释.但是感觉不能只是总结于数据库方面因为为了解决这个问题增加了很多监控措施.所以想就这这个问题,总结一下这次问题诊断过程中学习到的JVM相关知识.一个JVM的监控图......
  • 第八周阅读笔记|人月神话————提纲挈领
    这一章讲到了化学工程师已经认识到无法一步将实验室工作台上的反应过程移到工厂中,需要一个试验工厂来为提高产量和在缺乏保护的环境下运作提供宝贵经验。这使我想起了以前工作中做过一次类似的事情。那是一个商品上传功能,因为公司需要在像万圣节这样的日子前上传大量商品,所以需要......
  • <学习笔记> 网络流
    最大流codequeue<int>q;intdep[N],cur[N];intbfs(){ memset(dep,0,sizeof(dep)); q.push(st); dep[st]=1; while(!q.empty()){ intx=q.front(); q.pop(); for(inti=head[x];i;i=nex[i]){ inty=ver[i]; if(dep[y]||!edge[i])continue; dep......
  • 【CCFCSP】2303真题笔记
    -1.田地丈量分析测试数据4101000555-2153881515-210315UNAC:情况不完全max,min就是很好用#include<bits/stdc++.h>usingnamespacestd;intmain(){intn,a,b;cin>>n>>a>>b;longlongarea;while(n--){intx1......
  • 【笔记】可计算理论
    下接复杂性理论计算模型Def.确定图灵机(DeterministicTuringMachine,DTM)7元组,记作\(M=(Q,\Sigma,\Gamma,\delta,q_0,B,F)\),其中\(Q\)是有穷状态集合\(\Sigma\)是有穷输入符号集合\(\Gamma\)是有穷带上符号集,\(\Sigma\sube\Gamma\)\(q_0\)是图灵机的起始......