坑的可以呀re

.findall()   直接匹配字母和数字

元字符:. ^ $ * + ? {} [] () \

import re
print(re.findall("alex","slfdlslalexgsj"))>>>[‘alex‘]

.  表示代表两个任意字符

import re
print(re.findall("a..x","slfd123salexgsj"))>>>[‘alex‘]
import reprint(re.findall("a..x","alexsdsadfxdlggsj"))>>>[‘alex‘, ‘adfx‘]

^  表示从开头开始匹配

import re
print(re.findall("^a..x","alexsdsdlggsj"))
>>>[‘alex‘]

$  匹配结尾的位置

import re
print(re.findall("a..x$","alexsdsadfxdafhx"))
>>>[‘afhx‘]
import re       #不能匹配$符print(re.findall("a..x$","alexsdsadfxdafhx$"))>>>[]

*  (0,+00)     匹配与前面的一个字符直到无穷次  没有的话匹配为“”      贪婪匹配

1 import re
2 print(re.findall("d*","aldddddddddfhx"))
3 >>>[‘‘, ‘‘, ‘ddddddddd‘, ‘‘, ‘‘, ‘‘, ‘‘]
import reprint(re.findall("^d*","ddddddddhhshfhx"))>>>[‘dddddddd‘]
print(re.findall("alex*","sodale"))>>>[‘ale‘]

+(1,+00)     匹配与前面的一个字符直到无穷次  必须要有一个            贪婪匹配

import reprint(re.findall("alex+","sodalex"))>>>[‘alex‘]
import reprint(re.findall("alex+","sodale"))>>>[]

?(0,1)  最多匹配一个。

import re
print(re.findall("alex?","sfhalexxdj"))print(re.findall("alex?","sfhaledj"))>>>[‘alex‘]>>>[‘ale‘]

{0,}==*

{1,}==+

{0,1}==?

{6}==只匹配6个

{1,6}==匹配1~6个

import re
print(re.findall("alex{0,3}","sfhalexxdj"))
print(re.findall("alex{3}","sfalexxledj"))
>>>[‘alexx‘]
>>>[]

?  变成惰性匹配

1 import re
2 print(re.findall("alex*?","sfhalexxdj"))
3 print(re.findall("alex+?","sfalexxledj"))
4 >>>[‘ale‘]
5 >>>[‘alex‘]

[]   或的意思   括号里面 都 单独 拿出来匹配    括号内至少要有一个     [a-z]表示a~z

import re
print(re.findall("www[oldboy baidu]","wwwbaidu"))print(re.findall("q[a*z]","dfdfduqaa"))print(re.findall("q[a*z]","dfdfduq"))
时间: 2024-10-12 13:28:41

坑的可以呀re的相关文章

移动端点击事件全攻略,有你知道与不知道的各种坑

看标题的时候你可能会想,点击事件有什么好说的,还写一篇攻略?哈哈,如果你这么想,只能说明你too young to simple. 接触过移动端开发的同学可能都会面临点击事件的第一个问题:click事件的300ms延迟响应.不能立即响应给体验造成了很大的困扰,因此解决这个问题就成为了必然. 这个问题的解决方案就是: zepto.js的tap事件.tap事件可以理解为在移动端的click事件,而zepto.js因为几乎完全复制jQuery的api,因此常常被用在h5的开发上用来取代jquery.

[原创] 关于免费VPN我踩过的那些坑

关于免费VPN我踩过的那些坑 因为工作的关系,笔者经常需要用到VPN, 访问国外国网站,你懂的. 我曾经试着自己购买VPS搭建过VPN, 被封了后就没心情再维护了,毕竟直接买VPN比VPS便宜太多.时间一长,也就有了一些经验. 这里总结成表格的形式,分享给大家: [NydusVPN] 知乎推荐的香港VPN, 比直通车好,线路稳定性好,办公游戏适合.注册前7天内可以无条件退款哦.  官方网站  [Astrill] 老牌VPN,但近两年被封底得太厉害,现在已经不太给力了. 注册第一个月能免费使用(付

Linux下GDB调试与对拍(先挖个坑)

应为NOIP要复赛在NOI-Linux下编写程序,所以被迫选择Vim+Gdb(主要是Guide太丑了). 虽然GUIDE的调试功能已经对付大多数的调试,反正学一学GDB的使用也没什么坏处. 1 生成调试信息 要调试C/C++的程序,首先在编译时,我们必须要把调试信息加到可执行文件中.使用编译器(cc/gcc/g++)的 -g 参数可以做到这一点.如: gcc -g hello.c -o hello g++ -g hello.cpp -o hello 如果没有-g,你将看不见程序的函数名.变量名,

Spring Cloud ZooKeeper集成Feign的坑2,服务调用了一次后第二次调用就变成了500,错误:Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is com.n

错误如下: 2017-09-19 15:05:24.659 INFO 9986 --- [ main] s.c.a.AnnotationConfigApplicationContext : Refreshing org.spring[email protected]56528192: startup date [Tue Sep 19 15:05:24 CST 2017]; root of context hierarchy 2017-09-19 15:05:24.858 INFO 9986 --

小心掉入旧墙刷漆的五大“坑”

一些朋友的旧墙刷漆都是由自己一手包办,但墙面重新刷漆有好几个误区需要多加注意的.前期材料的选择.施工的准备以及施工的方法,这都是墙面重新刷漆的重要环节.在这些环节中,一不小心就会掉入误区,现在让我们看看有哪些是需要我们注意的. 第一点:过分在意墙面涂料的品牌 一些朋友认为购买墙面涂料一定要买知名品牌使用才好,当然知名品牌的涂料产品确实有一定的质量保障,但是并不是说我们要一味地追求品牌油漆.其实,市场上许多普通品牌的油漆与知名品牌的质量和粉刷效果相差无几,但是在价格上却有很大的差异.所以家装时,需

angular踩坑之路:初探webpack

之前费了一番力气安装好了angular开发环境,后面的几天都是在angular中文官网上看文档,照着英雄教程一步一步操作,熟悉了angular的一些基本特性,这部分没有遇到什么大问题,还比较顺利.这两天在看官方文档中的Webpack简介,想跟着文档做一遍,了解一下如何用Webpack打包angular项目,结果遇到了一些问题,因为是初学angular和Webpack的小白,这些问题一时难以解决,花费了不少时间,想在这里记录一下. 首先跟着文档将相关的文件都添加到项目中,目录是这样子的: 根据文档

谈谈Vagrant中的那些坑:CentOS

安装了vagrant之后,当然需要将它投入使用.由于计划中的生产环境是 CentOS 7,因此想搭建一个 基于CentOS 7(x86_64)的虚拟开发环境. 最开始的一系列工作,比如在vbox中安装CentOS 7.打包box文件.将box导入vagrant等都不在此一一细述,后面将有专文总结这些过程. 然后坑来了:修改Vagrantfile配置文件欲实现 public_network: config.vm.network "public_network", ip: "19

阿里云磁盘扩容踩坑总结

公司半年前上线一个新的项目,采购了一批阿里云主机,磁盘组成是40G系统盘+100G的数据盘,数据库采用MariaDB Galera Cluster集群部署,由于业务数据量快速增长,导致磁盘存储空间剩余量很少,急需要扩容,先总结整个项目规划中埋下的坑: 1.没有DBA对数据库的容量规划,而前期的运维人员采购时选用100G的SSD云盘: 2.数据库默认使用共享表空间,缺点是删除数据后不释放空间,当数据快速增长后,我们采取了先删除临时表数据的方式来尽量避免暴力扩容,争取在春节期间稳定,删除部分数据后,

跳入linux的第一个坑-因为安装Ubuntu导致的硬盘被误格的恢复.(记TestDisk使用记录)

不看废话,直接跳到操作说明 前几日心血来潮想把家中的旧笔记本换成Linux操作系统,算是在业余生活中正式投入Linux的怀抱.说干就干,发行版选择了Ubuntu,下载了Ubuntu16.04的ISO,下载软碟通,制作成U盘启动.恩,重启电脑,U盘引导,进入安装界面. 恩,安装界面挺炫酷啊,还检测到硬盘中安装的Win8,恩,问我是与其他系统共存还是清除并安装,既然都正式投入怀抱了,肯定只安装Ubuntu啊,Win8,拜拜了,恩,选第二个.下图是网上找的.请注意第二个选项的注意:..算了,我就是看到

用js刷题的一些坑

leecode可以用js刷题了,我大js越来越被认可了是吧.但是刷题中会因为忽略js的一些特性掉入坑里.我这里总结一下我掉过的坑. 坑1:js中数组对象是引用对象 js中除了object还有数组对象也是引用对象,这点常常被忽视,所以在递归的时候传递数组要用arr.slice(0)这样复制一个一样的新数组,不然会出现你传入的数组会被同级的递归改变,结果就不对了. 所以只要数组复制的地方最好都要这么写,除非你真的想引用.而且注意是slice不是splice这两个方法差别很大,你如果用splice(0