正则表达式学习笔记

学习http://deerchao.net/tutorials/regex/regex.htm上内容做的一些笔记。

\b代表着单词的开头或结尾,也就是单词的分界处
.匹配除了换行符以外的任意字符。
它指定前边的内容可以连续重复使用任意次以使整个表达式得到匹配
.*连在一起就意味着任意数量的不包含换行的字符
+重复一次及一次以上
?重复零次或一次
\d匹配一位数字
\d{2}-\d{8}。这里\d后面的{2}({8})的意思是前面\d必须连续重复匹配2次(8次)
\s匹配任意的空白符,包括空格,制表符(Tab),换行符,中文全角空格等
\w匹配字母或数字或下划线或汉字
^匹配字符串的开始
$匹配字符串的结束

{a,b}重复的次数不能少于a次,不能多于b次

单词:不少于一个的连续的\w

^\d{5,12}$——整个字符串就是5到12位数字
\d{5,12}——字符串里包含5到12连续位数字

转义:. * \

[ ]内可以定义指定字符范围 eg.[0-9]、[aeiou]

分枝条件:用|把不同的规则分隔开,满足其中任意一种规则都可匹配
匹配分枝条件时,将会从左到右地测试每个条件,如果满足了某个分枝的话,就不会去再管其它的条件了

子表达式:用小括号来指定(也叫做分组)
eg.(\d{1,3}.){3}匹配三位数字加上一个英文句号(这个整体也就是这个分组)重复3次

反义:
\W匹配任意不是字母,数字,下划线,汉字的字符
\S匹配任意不是空白符的字符
\D匹配任意非数字的字符
\B匹配不是单词开头或结束的位置
[^x]匹配除了x以外的任意字符
[^aeiou]匹配除了aeiou这几个字母以外的任意字符

后向引用:用于重复搜索前面某个分组匹配的文本。例如,\1代表分组1匹配的文本
使用小括号指定一个子表达式后,匹配这个子表达式的文本(也就是此分组捕获的内容)可以在表达式或其它程序中作进一步的处理。默认情况下,每个分组会自动拥有一个组号,规则是:从左向右,以分组的左括号为标志,第一个出现的分组的组号为1,第二个为2,以此类推。

分组规则:分组0对应整个正则表达式
实际上组号分配过程是要从左向右扫描两遍的:第一遍只给未命名组分配,第二遍只给命名组分配--因此所有命名组的组号都大于未命名的组号
你可以使用(?:exp)这样的语法来剥夺一个分组对组号分配的参与权.

指定组名:
(?\w+)(或者把尖括号换成’也行:(?‘Word’\w+))(这里命名为Word)
引用这个分组捕获的内容,你可以使用\k
在这里插入图片描述

零宽断言:用于查找在某些内容(但并不包括这些内容)之前或之后的东西,像\b,^,$那样用于指定一个位置,这个位置应该满足一定的条件(即断言)

(?<=<(\w+)>).*(?=</\1>)匹配不包含属性的简单HTML标签内里的内容
如果前缀实际上是的话,后缀就是了。整个表达式匹配的是之间的内容(再次提醒,不包括前缀和后缀本身)

贪婪匹配:当正则表达式中包含能接受重复的限定符时,通常的行为是(在使整个表达式能得到匹配的前提下)匹配尽可能多的字符
懒惰匹配:匹配尽可能少的字符。转化为懒惰匹配模式,只要在它后面加上一个问号?。这样.*?就意味着匹配任意数量的重复,但是在能使整个匹配成功的前提下使用最少的重复
在这里插入图片描述
最先开始的匹配拥有最高的优先权

Python——re模块
一些重要函数:
compile(pattern)——定义一个正则表达式pattern(模式对象)
search(pattern,string)——在string中查找符合pattern的部分,找到返回MatchObject,否则返回None
match(pattern,string)——在string开头查找与pattern匹配的字符串,找到返回MatchObject,否则返回None
split(pattern,string)——按pattern分割string,返回一个包含分割后字符串的列表,不包含符合pattern的部分
findall(pattern,string)——返回一个列表,包含字符串中所有与pattern匹配的子串
sub(pattern,repl,string)——将所有与pattern匹配的子串换成repl

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值