正则----规则

正则通配符

符号 描述 备注
. 匹配除了换行以外的任何单字符,要是想匹配这个字符:\.
* 匹配零个或多个字符,要是想匹配这个字符:\* 贪婪
匹配0个或1个字符,要是想匹配这个字符:\? 非贪婪
^ 匹配输入字符的起始位置,要是想匹配这个字符:\^
+ 匹配一个或多个字符,要是想匹配这个字符:\+ 贪婪
$ 匹配输入字符串的结束位置,要是想匹配这个字符:\$
\b 匹配一个单词边界,即字与空格间的位置
\B 非单词边界匹配
() 标记一个子表达式的开始和结束位置,子表达式可以获取供以后使用,若要匹配这些字符:\(\)
[ 标记一个中括号表达式的开始,要是想匹配这个字符:\[
{ 标记限定符表达式的开始,要是想匹配这个字符:\{
| 指明两项之间的一个先择,要是想匹配这个字符:\
{n} n为一个非负整数,匹配确定的n次
{n,} n是一个非负整数,至少匹配n次
{n,m} n,m均为非负整数,其中n<=m。最小匹配n次,最多匹配m次
\s 匹配所有空白符,包括空格、制表符、换页符等等价于[ \f\n\r\t\v]
\S 匹配任何非空白字符,等价于[^ \f\n\t\r\v]
\t 匹配一个制表符,等价于 \x09
\n 匹配一个换行符,等价于\x0a
\r 匹配一个回车符,等价于\x0d
\f 匹配一个换页符,等价于\x0c
\v 匹配一个垂直制表符,等价于\x0b
\cx 匹配由x指明的控制字符,但是x的值必须是A-Z或a-z之一,否则,c被视为原义字符'c'
[0-9]+ 匹配多个数字
[0-9] 匹配单个数字
exp1(?=exp2) 查找exp2前面的exp1 ruddkgd(?=[\d+])表示匹配数字前面的ruddkgd
(?<=exp2)exp1 查找exp2后面的exp1 (?<=[\d+])[a-z]+表示匹配数字后面的字母
exp1(?!exp2) 查找后面不是exp2的exp1 [a-z](?![\d+])表示匹配后面不是数字的字母
?:exp 匹配exp但不获取匹配结构
x|y 匹配x或y
\d 匹配一个数字符
\D 匹配一个非数字符
\w 匹配字母、数字、下划线,等价于[A-Za-z0-9_]
\W 匹配非字母、数字、下划线,等价于[^A-Za-z0-9_]
re.findall(r'ruddkgd(?=[\d+])', e)    表示匹配e中数字前面的ruddkgd
re.findall(r'(?<=[\d+])[a-z]+', e)    表示匹配e中数字后面的字母
re.findall(r'[a-z](?![\d+])', e1)    表示匹配e1中后面不是数字的字母
re.findall(r'^[a-z0-9_-]{3,15}$',e)    表示匹配e中由小写字母和数字以及下划线,-组成,字符一共3~15个的字符串。
#惰性匹配
#r'a.*?b' ------> 以a开头b结尾,中间尽量少的匹配字符
f = 'acdaafgbkjfalbldkfasjfb'
print(re.findall(r'a.*?b', f))#['acdaafgb', 'alb', 'asjfb']

正则修饰符

修饰符 含义 描述
i ignore-不区分大小写 将匹配设置为不区分大小写,搜索时不区分大小写
g global-全局匹配 查找所有的匹配项
m more-多行匹配 使边界字符^和$匹配每一行的开头和结尾,注意:是多行,而不是整个字符串的开头和结尾
s 特殊字符圆点.中包含换行符\n 默认情况下的圆点.是匹配换行符\n之外的任何字符,加上s修饰符之后,圆点.中包含换行符\n

在python中:

•re.I 使匹配对大小写不敏感
•re.L 做本地化识别匹配
•re.M 多行匹配,影响^和$
•re.S 使.匹配包括换行在内的所有字符
•re.U 根据Unicode字符集解析字符.这个标志影响\w \W \b \B
•re.X 该标志通过给予你更灵活的格式以便你将正则表达式写的更易于理解.

正则优先级

等级 运算符 描述
\ 转义字符
| (),(?:),(?=),[] 圆括号和方括号
| *,+,?,{n},{n,},{n,m} 限定符
v ^,$,\任何元字符、任何字符 定位点和序列
| 替换,“或”操作
^[a-zA-Z0-9_]{1,}$      // 所有包含一个以上的字母、数字或下划线的字符串 
^[1-9][0-9]{0,}$        // 所有的正整数 
^\-{0,1}[0-9]{1,}$      // 所有的整数 
^[-]?[0-9]+\.?[0-9]+$   // 所有的浮点数

^[a-zA-Z0-9_]+$      // 所有包含一个以上的字母、数字或下划线的字符串 
^[1-9][0-9]*$        // 所有的正整数 
^\-?[0-9]+$          // 所有的整数 
^[-]?[0-9]+(\.[0-9]+)?$ // 所有的浮点数

正则分组

  • 分组 ()()()\1\2\3 \1表示与第一个()中内容一样,\2表示与第二个()中得内容一样,\3表示与第三个()中的内容一样
全部评论

相关推荐

不愿透露姓名的神秘牛友
07-11 12:31
以前小时候我最痛恨出轨、偷情的人,无论男女,为什么会出轨?现在我成了自己最讨厌的人,没想到分享的东西在牛客会被这么多人看,大家的评价都很中肯,我也认同,想过一一回复,但我还是收声了,我想我应该说说这件事,这件事一直压在我心里,是个很大的心结,上面说了人为什么出轨,我大概能明白了。我们大一下半年开始恋爱,开始恋爱,我给出了我铭记3年的承诺,我对她好一辈子,我永远不会背叛,我责任心太重,我觉得跟了我,我就要照顾她一辈子,我们在一起3年我都没有碰过她,她说往东我就往东,她说什么我做什么,她要我干什么,我就干什么!在学校很美好,中途也出过一些小插曲,比如男闺蜜、男闺蜜2号等等等。但我都强迫她改掉了,我...
牛客刘北:两个缺爱的人是没有办法好好在一起的,但世界上哪有什么是非对错?你后悔你们在一起了,但是刚刚在一起的美好也是真的呀,因为其他人的出现,你开始想要了最开始的自己,你的确对不起自己,21岁的你望高物远,你完全可以不谈恋爱,去过你想要的生活,你向往自由,在一起之后,你要想的不是一个人,而是两个人,你不是变心了,就像你说的,你受够了,你不想包容了,冷静几天是你最优的选择,爱人先爱己。
社会教会你的第一课
点赞 评论 收藏
分享
07-09 18:33
门头沟学院 Java
这么逆天每年都有人去???&nbsp;填多益网申就是大型的服从性测试
鲁大牛:辅导员在群里发了这个公司我就申了一下。网申居然要写当场开摄像头写两篇不少于三百字的作文。太逆天了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务