正则表达式—特殊表达式含义

正则表达式的字母和数字表示他们自身,但多数字母和数字前加一个反斜杠时会拥有不同的含义。

下面列出了正则表达式模式语法中的特殊元素。

1.普通字符集

1)    \w              匹配字母数字及下划线

2)    \W              匹配非字母数字及下划线

3)    \s               匹配任意空白字符,等价于 [\t\n\r\f].

4)    \S               匹配任意非空白字符

5)    \d               匹配任意数字,等价于 [0-9]

6)    \D              匹配任意非数字

7)    \1...\9            匹配第n个分组的内容。

8)    [a-zA-Z0-9]    匹配任何字母及数字

2.数量字符集

用在字符或分组符(...)之后,默认贪婪匹配,如果想抑制贪婪匹配,需在数量字符后加?,例如:\w+?

1) .    匹配任意字符,除了换行符,当re.DOTALL标记被指定时,可以匹配包括换行符的任意字符

2)  *        匹配前一个字符0次1次或多次

3)  +        匹配前一个字符1次或多次

4)  ?        匹配前一个字符0次或1次

5)  {m}     匹配前一个字符m次

6)  {m,n}   匹配前一个字符m到n次

7)  {m,}     匹配前一个字符至少m次

8)  {,n}      匹配前一个字符0到n次,最多n次

3.边界匹配符

1)  ^       匹配字符串开头,如果是多行则匹配每一行的开头

2)  [^]       在[...]中,^表示否定,如非字母[^a-zA-Z],非数字[^0-9]

3)  $       匹配字符串或一行的结尾,如果是多行匹配模式,则每一行的结尾

4)  \A       仅匹配字符串的开始,同^

5)  \b        匹配一个单词的边界,也就是指单词和空格间的位置

6)  \B       等价于[^\b]表示匹配非单词边界

7)  \Z       匹配字符串结束,如果是存在换行,只匹配到换行前的结束字符串。

8)  \z        匹配字符串结束

4.逻辑匹配符

1)  |(或)

    匹配 | 左右任意一种正则表达式,如果左边表达式匹配上,匹配结束,不再匹配右边的正则表达式,该符号一般放在()中使用,如果没在圆括号中则它的范围是整个正则表达式

2)  分组 (...)

    后向引用,用()括起来的正则表达式将被作为一个分组,从正则表达式的左边依次算起,有多少个左括号'(',就有 多少个分组,分组的编码从1依次加1,无论是括号中嵌套括号,并且分组表达式作为一个整体,后可接数量词。

3)  \<number>

    引用分组匹配到的分组编号为<number>的字符串 如:\1...\9

4)  (?P<name>...)

    命名分组,除了默认的分组编号外再指定一个别名分组

    注意:P是大写

5)  (?P=name)

    引用别名为name的分组匹配,这个是在正则表达式中引用,表示匹配重复的字符串,也可以使用编号引用。

    注意:P是大写

5.特殊匹配符

1)  (?imx)     正则表达式包含三种可选标志:i, m, 或 x 。只影响括号中的区域。

2)  (?-imx)      正则表达式关闭 i, m, 或 x 可选标志。只影响括号中的区域。

3)  (?:...)        匹配到的括号内字符串不作为分组

4)  (?!pattern)       前向否定断言语法,表示否定开头

          只能用在正则表达式的开头,pattern是匹配模式,它后面的内容需要不匹配 该正则表达式才匹配成功

5)  (?<!pattern)   后向否定断言语法,表示否定结尾

           前面的内容需要不匹配该pattern模式才匹配成功

6)  (?=pattern)   前向肯定断言语法.

          需要匹配pattren模式才能匹配成功,表示肯定前面的字符内容

7)  (?<=pattern)    后向肯定断言语法

         需要匹配pattern模式才能匹配成功,表示肯定后面的字符内容

8)     (?#...)           #后面的内容将被作为注释而忽略

 # coding=utf-8
import re
# 1. 写一个正则表达式,使其能同时识别下面所有的字符串:'bat','bit', 'but', 'hat', 'hit', 'hut' s ="bat ,bit ,but ,hat ,hit ,hut"
print re.findall(r'[bh][aiu]t',s) # 2.匹配由单个空格分隔的任意单词对,也就是姓和名 s = "Han meimei, Li lei, Zhan san, Li si"
print re.findall(r'([A-Za-z]+) ([A-Za-z]+)',s) # 3. 匹配由单个逗号和单个空白符分隔的任何单词和单个字母,如姓氏的首字母 s = "yu, Guan bei, Liu fei, Zhang"
print re.findall(r'([a-zA-Z]+),\s([a-zA-Z])',s) # 4.匹配所有的有效的Python标识符集合 s = "_hello , python_1 , 2world , Pra_ni , @dfa_ , ewq* "
print re.findall(r'\b[a-zA-z_][\w]*(?!=\W) ',s) # 5. 根据美国街道地址格式,匹配街道地址。美国接到地址使用如下格式:1180 Bordeaux Drive。使你的正则表达式足够灵活,以支持多单词的街道名称,如3120 De la Cruz Boulevard s = """street 1: 1180 Bordeaux Drive,"
street 1: 3120 De la Cruz Boulevard"""
print re.search(r'\d+( +[a-zA-Z]+)+',s).group() # 6. 匹配以“www”起始且以“.com”结尾的简单Web域名:例如,http://www.yahoo.com ,也支持其他域名,如.edu .net等 s = "http://www.yahoo.com www.foothill.edu"
print re.search(r'w{3}\.[a-zA-Z]+\.(com|edu|net)',s).group() # 7. 匹配所有能够表示Python整数的字符串集 s = '520a1 20L 0 156 -8 -10a A58'
ite = re.finditer(r'-?\d+',s)
for i in ite: print i.group(), # 8. 匹配所有能够表示Python长整数的字符串集 s = '520a 20L 0 156 -8L A58'
ite = re.finditer(r'-?\d+L',s)
for i in ite: print i.group(), # 9. 匹配所有能够表示Python浮点数的字符串集 s = '80.2 fds2.1 0.003'
print re.findall(r'\d+\.\d+',s) # 10. 表示所有能够表示Python复数的字符串集 s = '12j fds -4j 5-2j fdsa'
print re.findall(r'\d*-?\d+j',s) # 11、匹配一行文字中的所有开头的字母内容 s="Now, let's take a closer look at some iconic moments from the show's stage made by Chinese Angels."
print re.findall(r'\b\w',s) # 12、匹配一行文字中的所有开头的数字内容 s="Now, let's take a closer look at some iconic moments from the show's stage made by Chinese Angels."
print re.findall(r'\b\d',s) # 13、匹配一行文字中的所有开头的数字内容或字母内容 s = "577fsda3f you12daf f1s32dafffff"
print re.findall(r'\b\d+|\b[A-Za-z]+',s) # 14、 只匹配包含字母和数字的行 s = "nihao fsadf \n789! 3asfd 1\nfds12df e4 4564"
print re.findall(r'^([a-zA-Z\d ]+)$',s,re.M) # 15、提取每行中完整的年月日和时间字段 s="""time 1988-01-01 17:20:10 fsadf 2018-02-02 02:29:01"""
print re.findall(r'[12]\d{3}\-[01]\d\-[0123]\d\s*[012]\d\:[012345]\d\:[012345]\d',s) # 16、将每行中的电子邮件地址替换为你自己的电子邮件地址 s="""xss@qq.com, 465465@163.com, ppp@sina.com
s121f@139.com, soifsdfj@134.com
pfsadir423@123.com"""
print re.sub(r'\w+?\@\w+?\.com','zeke@qq.com',s) # 17、匹配\home关键字: s ="fdsar \home \homeer"
print re.findall(r'\\home',s)

python正则表达式--特殊字符的更多相关文章

  1. python 正则表达式特殊字符

    字符 描述 \ 将下一个字符标记为一个特殊字符.或一个原义字符.或一个 向后引用.或一个八进制转义符.例如,'n' 匹配字符 "n".'\n' 匹配一个换行符.序列 '\\' 匹配 ...

  2. Python 正则表达式入门(中级篇)

    Python 正则表达式入门(中级篇) 初级篇链接:http://www.cnblogs.com/chuxiuhong/p/5885073.html 上一篇我们说在这一篇里,我们会介绍子表达式,向前向 ...

  3. 比较详细Python正则表达式操作指南(re使用)

    比较详细Python正则表达式操作指南(re使用) Python 自1.5版本起增加了re 模块,它提供 Perl 风格的正则表达式模式.Python 1.5之前版本则是通过 regex 模块提供 E ...

  4. Python天天美味(15) - Python正则表达式操作指南(re使用)(转)

    http://www.cnblogs.com/coderzh/archive/2008/05/06/1185755.html 简介 Python 自1.5版本起增加了re 模块,它提供 Perl 风格 ...

  5. python 正则表达式汇总

    一. 正则表达式基础 1.1.概念介绍 正则表达式是用于处理字符串的强大工具,它并不是Python的一部分. 其他编程语言中也有正则表达式的概念,区别只在于不同的编程语言实现支持的语法数量不同. 它拥 ...

  6. 一篇搞定Python正则表达式

    1. 正则表达式语法 1.1 字符与字符类 1 特殊字符:\.^$?+*{}[]()| 以上特殊字符要想使用字面值,必须使用\进行转义 2 字符类    1. 包含在[]中的一个或者多个字符被称为字符 ...

  7. Python 正则表达式 (python网络爬虫)

    昨天 2018 年 01 月 31 日,农历腊月十五日.20:00 左右,152 年一遇的月全食.血月.蓝月将今晚呈现空中,虽然没有看到蓝月亮,血月.月全食也是勉强可以了,还是可以想像一下一瓶蓝月亮洗 ...

  8. Python正则表达式很难?一篇文章搞定他,不是我吹!

    1. 正则表达式语法 1.1 字符与字符类 1 特殊字符:.^$?+*{}| 以上特殊字符要想使用字面值,必须使用进行转义 2 字符类 1. 包含在[]中的一个或者多个字符被称为字符类,字符类在匹配时 ...

  9. python正则表达式Re模块备忘录

    title: python正则表达式Re模块备忘录 date: 2019/1/31 18:17:08 toc: true --- python正则表达式Re模块备忘录 备忘录 python中的数量词为 ...

随机推荐

  1. Kubernetes一键部署利器:kubeadm

    要真正发挥容器技术的实力,你就不能仅仅局限于对 Linux 容器本身的钻研和使用. 这些知识更适合作为你的技术储备,以便在需要的时候可以帮你更快的定位问题,并解决问题. 而更深入的学习容器技术的关键在 ...

  2. c指针作业(第一次)

    1. 数据类型的本质是什么? (从编译器的角度考虑) 数据类型可理解为创建变量的模具:是固定内存大小的别名 数据类型的作用:编译器预算对象(变量)分配的内存空间大小 注意:数据类型只是模具,编译器并没 ...

  3. Nginx集群session管理的两种方式

    1.IP_HASH 修改nginx配置文件 实现非常简单,但是绑定在一个服务器上了,不能跨越多个服务. 2.redis管理 管理session信息的空间,需要修改tomcat配置文件 下载相应的red ...

  4. Magento 2 Theme Ultimate Guide - 如何创建Magento 2主题终极指南

    Magento 2 Theme Ultimate Guide - 如何创建Magento 2主题基础指南 在Magento 2中管理和设置主题的方式有很多改进.Magento 1.9中引入的theme ...

  5. BZOJ 3456: 城市规划 与 多项式求逆算法介绍(多项式求逆, dp)

    题面 求有 \(n\) 个点的无向有标号连通图个数 . \((1 \le n \le 1.3 * 10^5)\) 题解 首先考虑 dp ... 直接算可行的方案数 , 容易算重复 . 我们用总方案数减 ...

  6. 配置ssh免密登录服务器

    当前服务器环境为ubantu 14.04 一.本地 ①生成id_rsa   id_rsa.pub ssh-keygen -t rsa -C "xxxxx@xxxxx.com" ss ...

  7. Ubuntu 服务器上面--安装和配置mysql 【转】

    更新源列表 打开"终端窗口",输入"sudo apt-get update"-->回车-->"输入root用户的密码"--> ...

  8. 测试框架httpclent 1.HttpClient简介及第一个demo

    httpclient就是一个模拟 发送http请求的一个工具. 首先在pom.xml文件里面添加工具类 <dependencies> <dependency> <grou ...

  9. 使用Maven插件构建Spring Boot应用程序镜像

    使用Maven插件构建Spring Boot应用程序的Docker镜像. 环境准备 1.Linux系统 2.安装JDK,Maven 3.安装Docker 应用实践 1.在应用程序根目录下添加Docke ...

  10. 使用 functional interface 和 lambda 表达式来优化代码

    ========================================原始代码========================================RoleService 类有删除 ...