day26 re正则表达式
Python之路,Day14 = Python基础14
compile()
match()
search()
findall() m.group() # 括号里面剋跟参数,表示打印里面(分组)的第几个元素(索引从1开始) 需要测试下 a = re.compile(r'abc') # 制作匹配规则
a.search('abcdefghijk') # a是一个对象 match # 从第一个开始匹配
findall # 找出所有符合规则的
search # 从前往后开始寻找 元字符
. # 除换行符的任意字符
\ # 转义字符
# re 模块是 python 调用的一个 小型语言,如果 规则里面有 \\ 的话,
# python 解释器在读取的时候,就会先把它转成 \ 去掉特殊意义,
# 但是 re 里面还是需要转化 \ 的特殊意义,所以,需要 \\\\ 来使用
# 经过 python 的时候,变成了 \\, 到 re 里面,就变成了 \;
[...] # 字符集合 \d # 数字[0-9]
\D # 非数字[^0-9]
\s # 空白字符[<空格>\t\r\n\f\n]
\S # 非空白字符[^\s]
\w # 单字字符[A-Za-z0-9]
\W # 非单词字符[^\w] 数量词字符
* # 匹配前0个字符1次或者多次
+ # 匹配前一个字符1次或者多次
? # 匹配前一个字符0次或者1次
{m} # 匹配前一个字符m次
{m,n} # 匹配前一个字符m至n次
数量词?# 变成非贪婪模式(默认为贪婪模式,尽可能的匹配多的次数) ^
'^[abc]' # 以a或b或c开头的
'[^abc]' # 非a、b、c 边界字符
^ # 匹配字符串开头,多行匹配每一行开头
'^[abc]' # 以a或b或c开头的
'[^abc]' # 非a、b、c $ # 匹配字符串末尾,多行匹配每一行末尾
\A # 仅匹配字符串开头,注意转义字符
\Z # 仅匹配字符串末尾,注意转义字符
\b # 匹配\w和\W之间,注意转义字符 逻辑、分组
| # 或
ret = findall("www\.(?:\w+)\.(?:com|cn)")
# findall 默认只显示 分组的信息(括号里面的), 加了 ?: 那么就取消优先级啊(打印所有)
# | 两个要用 括号 括起来 (...) # 匿名分组
a = re.compile('(a)b(c)')
a.match('abcdefg')
a.groups() # 分组匹配。会打印出一个元组,符合规则a的为第一个元素,符合规则c的为第二个元素,如果后面的规则也有括号的话,依次变为元素 (?P<name>...) # 除了分组外还替该组制定一个 name 的别名
p = re.compile('(?P<name>a)b(c)')
a = p.match('abcdef')
a.group('name') # 可以把这个对应的元素取出来
a.groups()
a.groupdict() \<number> # 引入编号为<number>的分组匹配到的字符串
p = re.compile(r'(?<name>a)b(c)\1') # 注意 1 前面的 \ ,不加 r ,会被当成转义字符,可以写两个 \
# \1 像当与在这个位置引用了前面第一个的那个规则(分组里面的第一个),同样,不会被写入到分组中
p.match('abcdef')
a.groups()
a.groupdict() (?P=name) # 引用别名为<name>的分组匹配到的字符串
p = re.compile('(?<name>a)b(c)(?P=name)')
# (?P=name) 相当于在这个位置引用了前面那个 名字叫 name 的这个规则,虽然这里有括号,但是它只会匹配到,不会放入分组中
p.match('abcdef')
a.groups()
a.groupdict() 特殊构造
(?:...) # (...) 不分组版本,虽然在括号里面,但是不进行分组
(?#...) # #号后面的内容将作为注释
(?=...) # 后面的限定词满足 ... 条件
re.compile(r'a(?=\d)') # 匹配前面是a,后面是数字的内容,得到的结果显示出a,不显示后面的数字
(?!...) # 后面的限定词不满足 ... 条件
(?<=...) # 前面的限定词满足 ... 条件
(?<!...) # 前面的限定词不满足 ... 条件
(?(id/name) yes |no) #
# re.compile(r'(\d)?abc(?(1)\d|abc)')
# 匹配规则为 (\d)?abc ,有分组;
# (?(1)\d|abc) 前面 分组里面位置为 1 的规则,可以是数字,也可以是 abcdef 正则表达式开关
忽略大小写:
可以写成:re.compile(r'(?i)abc')
开关模式:re.compile(r'abc', re.I) # 推荐 sub
p = re.compile(r'(\w) (\w)')
s = 'hi you, good boy'
print(p.sub(r'\2 \1', s)
>>> you hi, boy good
day26 re正则表达式的更多相关文章
- CRM项目之RBAC权限组件-day26
写在前面 上课第26天,打卡: 世间安得双全法 不负如来不负卿 s17day26 CRM项目 项目概要:XX公司CRM - 权限管理,公共组件,app ***** - 熟悉增删改查,Low *** - ...
- JS正则表达式常用总结
正则表达式的创建 JS正则表达式的创建有两种方式: new RegExp() 和 直接字面量. //使用RegExp对象创建 var regObj = new RegExp("(^\\s+) ...
- Python高手之路【五】python基础之正则表达式
下图列出了Python支持的正则表达式元字符和语法: 字符点:匹配任意一个字符 import re st = 'python' result = re.findall('p.t',st) print( ...
- C# 正则表达式大全
文章导读 正则表达式的本质是使用一系列特殊字符模式,来表示某一类字符串.正则表达式无疑是处理文本最有力的工具,而.NET提供的Regex类实现了验证正则表达式的方法.Regex 类表示不可变(只读)的 ...
- C#基础篇 - 正则表达式入门
1.基本概念 正则表达式(Regular Expression)就是用事先定义好的一些特定字符(元字符)或普通字符.及这些字符的组合,组成一个“规则字符串”,这个“规则字符串”用来判断我们给定的字符串 ...
- JavaScript正则表达式,你真的知道?
一.前言 粗浅的编写正则表达式,是造成性能瓶颈的主要原因.如下: var reg1 = /(A+A+)+B/; var reg2 = /AA+B/; 上述两个正则表达式,匹配效果是一样的,但是,效率就 ...
- Python 正则表达式入门(中级篇)
Python 正则表达式入门(中级篇) 初级篇链接:http://www.cnblogs.com/chuxiuhong/p/5885073.html 上一篇我们说在这一篇里,我们会介绍子表达式,向前向 ...
- 【JS基础】正则表达式
正则表达式的() [] {}有不同的意思. () 是为了提取匹配的字符串.表达式中有几个()就有几个相应的匹配字符串. (\s*)表示连续空格的字符串. []是定义匹配的字符范围.比如 [a-zA-Z ...
- JavaScript 正则表达式语法
定义 JavaScript定义正则表达式有两种方法. 1.RegExp构造函数 var pattern = new RegExp("[bc]at","i"); ...
随机推荐
- linux 两个进程通过 共享内存 通信例子
例子1:两个进程通过共享内存通信,一个进程向共享内存中写入数据,另一个进程从共享内存中读出数据 文件1 创建进程1,实现功能,打印共享内存中的数据 #include <stdio.h> # ...
- PHP72w安装
PHP72w # rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm # rpm ...
- (PASS)字符数组\字符串数组 和 字符串 的相互转换
1,字符数组 转换为 字符串 java可以使用两种方法直接将字符数组转为字符串. 方法1:直接在构造String时转换. char[] data = {'a', 'b', 'c'}; String s ...
- WordPress .gitignore
# ----------------------------------------------------------------- # .gitignore for WordPress @salc ...
- 安装 Confluence6.7.1 笔记
安装 Confluence6.7.1 我是使用命令行进入mysql的mysql -uroot -p123456 创建数据库 CREATE DATABASE confluence DEFAULT CHA ...
- leetcood学习笔记-257-二叉树的所有路径
题目描述: 第一次提交:参考113-路径总和② class Solution: def binaryTreePaths(self, root: TreeNode) -> List[str]: r ...
- ASCII 对应表
{ Bin (二进制) Oct (八进制) Dec (十进制) Hex (十六进制) 缩写/字符 解释 0000 0000 00 0 0x00 NUL(null) 空字符 0000 0001 01 1 ...
- PHP mysqli_affected_rows() 函数
实例 从不同的查询中输出所影响记录行数: <?php // 假定数据库用户名:root,密码:123456,数据库:RUNOOB $con=mysqli_connect("localh ...
- Spring-Security (学习记录三)--读取数据库中的用户和角色
目录 1.先将hibernate的环境整合进来 2.创建一个数据库security,执行security.sql 3.修改spring-security.xml,采用数据库的方式读取用户跟角色 4.u ...
- console.log("正常-普天数据已调用");
console.log("正常-普天数据已调用");