Python正则表达式1.2:特殊符号和字符

正则表达式(1.2):

择一匹配符号

表示择一匹配的管道符号为|,表示从多个模式中选择其一。用于分割不同的正则表达式。

示例:

# 匹配的字符串为:apple、orange
apple|orange  

这样一来,正则表达式就可以匹配多个字符串,所以择一匹配有时候也称作并或逻辑或。

匹配任意单个字符

点号(.)匹配除了换行符(\n)以外的任何字符。无论字母、数字、空格、可打印字符、不可打印字符,甚至是符号,使用点号都能匹配。

示例:

# 匹配在字母'f','o'之间的任意三个字符,如fabco、f987o、f#^*o 等等
f...o
# 匹配在字符串end之前的任意一个字符
.end
#匹配在字符串.com之前的任意一个字符
.\.com  # 使用反斜线转译'.'。

字符串起始,结尾,单词边界的匹配

匹配字符串的开始位置用 ^ 或者 \A
匹配字符串的结尾位置用 $ 或者 \Z

示例:

# 匹配任何以www.作为起始的字符串
^www\.
# 匹配任何以.com作为结尾的字符串
\.com$
# 匹配任何由单独的字符串 Subject:hi 构成的字符串
^Subject:hi$

下面我们来通过示例讨论一下\b\B的区别:

# 匹配包含 the 的字符串
the
# 匹配任何以 the 开始的字符串
\bthe
# 仅仅匹配单词 the
\bthe\b
# 任何包含但不以the作为起始的字符串
\Bthe

创建字符集

示例:

b[aeiu]t      #匹配的字符串: bat,bet,but,bit
[ab][12]      #匹配的字符串: a1,a2,b1,b2

由上例子可以明显看出,方括号表示的是逻辑或功能。

限定范围和否定

除了单个字符以外,字符集还支持匹配指定的字符范围。下面我举一个例子来说明。

1. 限定范围

[A-Z]: 表示匹配大写字母的字符集,`-`为连接符,`[]`构成字符集,`A-Z`表示大写字母。

2.否定

[^aeiou]: 表示匹配一个非元音字符(aeiou为元音字符)。`^`为脱字符,表示否定。

闭包操作

Kleene闭包:*匹配其左边的正则表达式出现零次或多次的情况
正闭包:+匹配一次或者多次出现的正则表达式,?匹配零次或者一次出现的正则表达式。

闭包操作符:

[dn]ot?       #t可要可不要,例如:do,no,dot,not
0?[0-9]       #任何数值数字,它可能前置一个'0'
[0-9]{15,16}  #匹配15或者16个数字
</?[^>]+>     #匹配全部HTML标签

表示字符集的特殊字符

\d:可以表示任何十进制数字
\w: 可以表示全部字母数字的字符集
\s: 可以表示空格符号
\D: 可以表示任何非十进制数

# 美国电话号码格式(xxx-xxx-xxxx)
\d{3]-\d{3}-\d{4}
# 以xxx@yyy.com格式表示的简单电子邮箱地址
\w+@\w+\.com

使用圆括号进行分组

示例:

# 名字和姓氏,以及对名字的限制(如果有首字母必须大写,后续字母小写)
# 全名前可以有可选的"Mr.","Mrs","Ms."或者"M"作为称谓
# 以及灵活可选的姓氏,可以有很多单词,横线以及大小写字母。
(Mr?s?\.)?[A-Z][a-z]*[A-Za-z-]+

扩展表示法

扩展表示法,通常用于判断匹配之前提供标记,实现一个前(后)视匹配,或者条件检查

示例:

(?:\w+\.)* #以句点作为结尾的字符串,如:“google”,“twitter”,“Facebook”但是这些匹配不会保存下来供后续使用和数据检索
  
(?<!192\.168\.)  #如果一个字符串前不是“192.168”才做匹配操作,假定用于过滤掉一组C类IP地址。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值