正则表达式 学习 入门

1 参考资料

《学习正则表达式.pdf》
《正则表达式必知必会(第2版·修订版).pdf》
来自《python 基础教程 第二版 修订版》
本书是全球程序员公认的正则表达式最佳速成教材。

2 测试正则表达式 工具

http://www.myregexp.com/
http://tool.oschina.net/regex/

Andrew Kuchling
Regular Expression HOWTO
正则表达式 HOWTO
http://amk.ca/python/howto/regex/

Regular expression operations

https://docs.python.org/2/library/re.html

符号 .

符号 . 可以匹配任何字符 除了 换行符
比如 .ython 可以匹配 python 和 jython
符号. 只能匹配一个字母,不能是零个或者多个

可以匹配任何字符串(除了换行符外的任何单个字符)
点号称为通配符(wildcard)

点号 . 匹配任意 一个字符 ,不是多个字符
c.t 匹配 cat 和cot等

.字符可以匹配任何单个的字符,字母,数字甚至是.字符本身

特殊字符 转义为 普通字符 \

r’python.org
反斜线
\ 是一个元字符(metacharacter,表示’这个字符有特殊含义’,而不是字符本身含义)
如果需要搜索\本身,就必须对\字符进行转义。相应的转义序列是两个连续的反斜杠字符\

中括号 [ ] 字符集

使用中括号,括住字符串来创造字符集(character set).
字符集可以匹配它所包括的任意字符。
[pj]ython 能够匹配python 和 jython
可以[a-z] 匹配a到z的任意一个字符
[a-zA-Z0-9] 能够匹配任意大小字母和数字
(字符集只能匹配一个这样的字符)

【^abc】可以匹配任何除了a,b,c之外的字符

在 字符集中 没有必要 对 点号, 星号 ,问号,进行转义

使用元字符[和]来定义一个字符集合。
在使用[和]定义的字符集合里,这两个元字符之间的所有字符都是该集合的组成部分,
字符集合的匹配结果是能够与该集合里的任意一个成员相匹配的文本
[和]不匹配任何字符,它们只负责定义一个字符集合。
[0123456789] 与 [0-9] 等价
[A-Za-z0-9]

元字符[和]用来定义一个字符集合,其含义是必须匹配该集合里的字符之一。

字符集合 取非 匹配

用元字符^来表明你想对一个字符集合进行取非匹配
这与逻辑非运算很相似

[ns]a[^0-9]
一个字符 不能是数字

^字符作用于给定字符集合中的所有字符或者字符区间
而不是仅限于紧跟在^字符后面的那一个字符或者字符区间

管道符号 |

只想匹配字符串python 和 perl
管道符号,用于选择项的特殊字符: 管道符号 |
所需的模式,可以写成’python|perl’

子模式 ()

subparttern
可以使用圆括号括起需要的部分
p(ython|erl)

问号 ?

在 子模式后面加上?,变为可选项
'(http://)?(www.)?python.org
只能匹配以下字符串,不会匹配其他的

子模式()

问号,表示子模式可以出现一次或者根本不出现
下面的是允许子模式重复多次

(pattern)* 允许重复0次或者多次
(pattern)+ 重复1次或者多次
(pattern){m,n} 重复m 到n次

字符串的开始 和结尾

^ 标记开始
$标记结束
从开始进行模式匹配

^ht+p
匹配的是 http 或者 htttttp
不能匹配 whtttp
注意那个 + 号 是针对t的

111

http://python.org/doc/lib/re-syntax.html

特殊字符

\d 匹配任何数字
\D 匹配非数字
\w 匹配任何数字字母字符,
\W 匹配非数字字母字符
\s 匹配任何空白字符
\S 匹配任何非空白字符

\b 是正则表达式规定的一个特殊代码(好吧,某些人叫它元字符,metacharacter),代表着单词的开头或结尾,也就是单词的分界处。虽然通常英文的单词是由空格,标点符号或者换行来分隔的,但是 \b 并不匹配这些单词分隔字符中的任何一个,它只匹配一个位置。

如果需要更精确的说法,\b 匹配这样的位置:它的前一个字符和后一个字符不全是(一个是,一个不是或不存在) \w。

使用场景:

元字符

英文 .号 是一个元字符,用来匹配任何一个单个字符
左方括号[也是一个元字符,它标志着一个字符集合的开始。
因为元字符在正则表达式里有特殊的含义,所以这些字符就无法用来代表他们本身。

对元字符进行转义需要用到 \ 字符,这意味着 \字符也是一个元字符,它的特殊含义是对其他的元字符进行转义。

匹配空白字符的元字符

匹配原始文本中的非打印空白字符。像换行符,制表符,这类字符很难被字节输入到一个正则表达式中。可以使用特殊的哦元子夫来输入它们。
\b 回退并且删除一个字符 Backspace键
\f 换页符
\n 换行符
\r 回车符
\t 制表符(Tab键)
\v 垂直制表符

匹配特定的字符类别

匹配某一个类别的字符
类元字符 会使表达式简单易懂

匹配数字 数字元字符

\d 任何一个数字字符 (等价于[0-9]) 单个字符
\D 任何一个非数字字符(等价于 [^0-9]) 单个字符

匹配任意单个数字字符

匹配字母和数字(与非字母和数字)

\w 任何一个字母数字字符(大小写都可)或者下划线字符

\W 任何一个非字母数字或者非下划线字符

在这里插入图片描述

第5章 重复匹配

\w 只能匹配单个字符
可以通过几种特殊的元字符来做到,匹配多个字符。

+号字符

想匹配一个字符(或者字符集合)的多次重复
主要简单的给这个字符(或者字符集合)加上一个+字符作为后缀就行了。
+匹配至少一个字符,不匹配零个字符的情况。
[0-9]匹配任意单个字符
[0-9]+将匹配一个或者多个连续的数字

* 匹配 零个或者多个字符
?匹配零个或者一个字符

?只能匹配一个字符(或者字符集合)的零次或者一次出现。
最多不超过一次。
? 是一个元字符,如果需要匹配?本身,就必须使用它的转义序列?

匹配的重复次数

设定重复次数的语法:
用{和}字符来给出,把数值写在它们之间
{ 和 } 是元字符。
{2,4}最少重复2次,最多重复4次

贪婪形式 元字符

*号
*?号
+号
+?号

位置匹配

那些字符(或者字符集合)可以出现在原始文本里的任意位置
可是,在某些场合,只需要对某段文本的特定位置进行匹配。这就引出了位置匹配的概念。

单词边界 \b
\b 用来匹配一个单词的开始或者结尾

字符串边界

字符串开头的^
字符串结尾的$
在这里插入图片描述

子表达式 ( 和 )

把一个表达式划分为一系列子表达式的目的是为了把那些子表达式当作一个独立的元素来使用。
子表达式必须使用(和)括起来。

子表达式 在概念上 相当于 一个字符 一个 字符集合
可以把这个子表达式 作为一个字符集合看待。

| 或操作符

第8章 Page68

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值