split与re.split/捕获分组和非捕获分组/startswith和endswith和fnmatch/finditer 笔记
split()对字符串进行划分:
>>> a = 'a b c d'
>>> a.split(' ')
['a', 'b', 'c', 'd']
复杂一些可以使用re.split()
>>> import re
>>> re.split(r'[;,.]\s', a)
['a', 'b', 'c', 'd']
捕获分组和非捕获分组
>>> a
'a; b, c. d f'
>>> re.split(r'(;|,|\.|\s)\s*', a) # 捕获分组(会讲括号符合条件的字符匹配出来)
['a', ';', 'b', ',', 'c', '.', 'd', ' ', 'f']
>>> re.split(r'(?:;|,|\.|\s)\s*', a) # 非捕获分组(不会讲括号符合条件的字符匹配出来)
['a', 'b', 'c', 'd', 'f']
startswith、endswith和fnmatch
startswith()用来判断是否是以什么字符开头
>>> a = 'index.py'
>>> a.startswith('in')
True endswith()判断字符是以什么结尾
>>> a = 'index.py'
>>> a.endswith('py')
True fnmatch()用来匹配字符串
>>> from fnmatch import fnmatch
>>> fnmatch('index.py', '*.py')
True
值得注意的是:fnmatch()在window和linux操作系统上有区别
# 在window操作系统上是成功的
>>> fnmatch('index.py', '*.PY')
True
# 在Linux操作系统上使用失败
>>> from fnmatch import fnmatch
>>> fnmatch('index.py', '*.py')
True
>>> fnmatch('index.py', '*.PY')
False
如果想忽略该区别可以是fnmatchcase(),fnmatchcase()严格区分大小写
>>> from fnmatch import fnmatchcase
>>> fnmatchcase('index.py', '*.py')
True
>>> fnmatchcase('index.py', '*.PY')
False
finditer()将找到的全部的参数以迭代器的形式返回
>>> import re
>>> a = 'ahd; ncc,slf sa. e'
>>> patt1 = re.compile(r'[a-z]+')
>>> for i in patt1.finditer(a):
... print(i)
...
<re.Match object; span=(0, 3), match='ahd'>
<re.Match object; span=(5, 8), match='ncc'>
<re.Match object; span=(9, 12), match='slf'>
<re.Match object; span=(13, 15), match='sa'>
<re.Match object; span=(17, 18), match='e'>
>>> print(type(patt1.finditer(a)))
<class 'callable_iterator'>
当然:如果只是使用与文件匹配有个更好的选择就是glob模块
split与re.split/捕获分组和非捕获分组/startswith和endswith和fnmatch/finditer 笔记的更多相关文章
- php 正则表达式捕获组与非捕获组
熟练掌握正则表达式是每个程序员的基础要求,对于每个初学者来说会被正则表达式一连串字符弄得头晕眼花.博主便会如此,一直对正则表达式有种莫名的恐惧.近来看到另一位博友写的 <php正则表达式> ...
- JAVA正则表达式-捕获组与非捕获组
Java捕获组与非捕获组的问题 先看例子: import java.util.regex.Matcher; import java.util.regex.Pattern; public class P ...
- PHP正则中的捕获组与非捕获组
今天遇到一个正则匹配的问题,忽然翻到有捕获组的概念,手册上也是一略而过,百度时无意翻到C#和Java中有对正则捕获组的特殊用法,搜索关键词有PHP时竟然没有相关内容,自己试了一下,发现在PHP中也是可 ...
- java 捕获组与非捕获组
非捕获组:格式:(?:xxxx), 如:(?:aaa)\\w+(bbb)\\1,\\1 代表重复捕获的第一组即是(bbb) public static void main(String[] args) ...
- js 正则表达式,分组,非捕获或 环视的使用
定位一个字符串中,匹配与定位重复字符中的最后一个字符: 例子: <script type="text/javascript"> var str="http:/ ...
- Python中正则匹配使用findall,捕获分组(xxx)和非捕获分组(?:xxx)的差异
转自:https://blog.csdn.net/qq_42739440/article/details/81117919 下面是我在用findall匹配字符串时遇到的一个坑,分享出来供大家跳坑. 例 ...
- JavaScript正则表达式模式匹配(4)——使用exec返回数组、捕获性分组和非捕获性分组、嵌套分组
使用exec返回数组 var pattern=/^[a-z]+\s[0-9]{4}$/; var str='google 2012'; alert(pattern.exec(str)); //返回一个 ...
- JavaScript正则表达式-非捕获性分组
非捕获性分组定义子表达式可以作为整体被修饰但是子表达式匹配结果不会被存储. 非捕获性分组通过将子表达式放在"?:"符号后. str = "img1.jpg,img2.jp ...
- 正则表达式分组()、不捕获(?:)和断言(?<=)详解
分组 分组在正则中用()表示,根据小菜理解,分组的作用有两个: 1.将某些规律看成是一组,然后进行组级别的重复,可以得到意想不到的效果. 2.分组之后,可以通过后向引用简化表达式(\1 或者$1). ...
随机推荐
- 相册 垂直居中; 水平居中. 1)宽度 大于高度, 宽度 100%; 2) 高度 大于 宽度 , 高度100%; getimagesize , list --->line-height , text-align, vertical-align, max-height, max-width
一: 效果: 1) 黑色 部分是 相框. 2) 图片 要实现 水平居中, 垂直居中 3) 如果 宽度 大于 高度 ,那么 宽度 100% ,如图1 , 高度 自适应 ,同时不能超过黑色相框的 高度 ; ...
- 自动化测试-20.selenium之FireFox下载项配置
前言: 当我们在使用Selenium运行自动化测试时,偶尔需要用到下载功能,但浏览器的下载可能会弹出下载窗口,或者下载路径不是我们想要保存的位置,所以在通过Selenium启动浏览器时需要做相关的设置 ...
- 【webdriver自动化】使用数据驱动的方式实现登录多个163账号
练习1:使用数据驱动的方式,登录多个邮箱账号 login_info.txt: youxiang_99@163.com,XXXX youxiang_100@163.com,XXXX main.py: f ...
- e与复利
e≍2.718 计算一个复利例子,设本金p,年利率为r,每月计算一次利息,月利息为r/12,则一年的本息一共: p(1+r/12)12=pq 当计算复利的时间间隔越来越小,根据上面极限公式,本金所乘的 ...
- NSCTF2015 逆向第五题分析
这道题目我没有写出Exploit,因为编码时候里面几个细节处理出错.但对程序的逆向分析已完成,这里就学习一下别人写Exploit的思路.主要参考:绿盟科技网络攻防赛资料下载 0x01 题目要求 题目要 ...
- tumblr热度
- C#Lambda表达式详解
Lambda表达式教程 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar -- 心分享.心创 ...
- 常用cursor光标说明
1.cursor语法: cursor : auto | crosshair | default | hand | move | help | wait | text | w-resize |s-res ...
- 腾讯云JavaWeb环境配置
腾讯云服务器Centos7系统配置javaWeb运行环境 java1.8 运行命令列表 yum list java-* 安装相应版本的jdk,一般含有devel的就是真正的jdk,如:java-1.8 ...
- oracle 11g(64位)datebase 安装流程
软件版本:oracle 11g 64位 datebase(二合一,含client) 系统环境:windows 10 专业版 64位操作系统 1)根据自己的操作系统去官网下载相应的安装程序,oracle ...