简介

  就其本质而言,正则表达式是内嵌在python内,由re模块实现,小型的专业化语言,最后由c写的匹配引擎执行。正则表达式(regular expression)描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种子串、将匹配的子串做替换或者从某个串中取出符合某个条件的子串等。

  正则的字符分为普通字符和元字符,普通字符比如“aaa”等,元字符是  .  ^  $  *  +  ?  ()  []  {}  |  \  这里它们都有特殊的含义

  判断一个字符串或者字符是否在另一个字符串内,如果是以列表形式返回这个这个字符或者字符串,否则为空列表

import re
a = re.findall("abc","aweffabcsefwse")
print(a) ['abc']

  如果字符串里有.的话,则代表可以匹配除了换行符之外的任何一个字符,.为通配符。

import re
a = re.findall("ab.c","aweffabbcsefwse")
print(a) ['abbc']

  “^”查看第二个字符串是否以第一个字符串或者字符开头

import re
a = re.findall("^abc","abcffabbcsefwse")
print(a) ['abc']

  “$”,查看第二个字符串是否以第一个字符串或者字符结尾

import re
a = re.findall("abc$","ffabbcsefwseabc")
print(a) ['abc']

  “*”这个加在字符串后边,对自己前边的字符进行控制,可以匹配0到多次*前的一个字符


import re
a = re.findall("abdc*","cghguabdcccc")
print(a) ['abdcccc']
 

  “+”这个加在字符串后边,对自己前边的字符进行控制,可以匹配1到多次+前的一个字符,用法同“*”

  “?”这个加在字符串后边,对自己前边的字符进行控制,可以匹配0到1次?前的一个字符,用法同“*”

  "{}"对自己前边的一个字符匹配n次,n为随机整数,大括号内可有俩参数,表示匹配n到m次,如果匹配次数不足返回空列表,如果超出,返回最大的匹配次数基本用法如下

import re
a = re.findall("abdc{3}","cghguabdccccc")
print(a) ['abdccc']

  “[]”中括号里的为一个字符集,只需要匹配到其中一个字符就为真,有种或者的意思,如果把元字符放里边,部分元字符会变成普通字符,比如.在这里为普通字符,^则变成了取反,用法

import re
a = re.findall("a[bd]c","cghguadc")
print(a) ['adc']

    \反斜杠,反斜杠后边跟元字符去除其特殊功能,跟普通字符实现特殊功能,引用序号对应的字组所匹配的字符串,它在字符集里依然有特殊功能

\b 匹配一个单词边界,也就是指单词和空格间的位置。例如,“er\b”可以匹配“never”中的“er”,但不能匹配“verb”中的“er”。 
\B 匹配非单词边界。“er\B”能匹配“verb”中的“er”,但不能匹配“never”中的“er”。
\cx 匹配由x指明的控制字符。例如,\cM匹配一个Control-M或回车符。x的值必须为A-Z或a-z之一。否则,将c视为一个原义的“c”字符。
\d 匹配一个数字字符。等价于[0-9]。
\D 匹配一个非数字字符。等价于[^0-9]。
\f 匹配一个换页符。等价于\x0c和\cL。
\n 匹配一个换行符。等价于\x0a和\cJ。
\r 匹配一个回车符。等价于\x0d和\cM。
\s 匹配任何空白字符,包括空格、制表符、换页符等等。等价于[\f\n\r\t\v]。
\S 匹配任何非空白字符。等价于[^\f\n\r\t\v]。
\t 匹配一个制表符。等价于\x09和\cI。
\v 匹配一个垂直制表符。等价于\x0b和\cK。
\w 匹配包括下划线的任何单词字符。等价于“[A-Za-z0-9_]”。
\W 匹配任何非单词字符。等价于“[^A-Za-z0-9_]”。
  简单演示一个
import re
a = re.findall("\d","cghgua1dc2")
print(a)
['', '']

  “()”这个和数学里的概念类似,就是把表达式部分封装起来作为一个整体,也就是分组,

import re
a = re.search("a(\d+)","cghgua12dc").group()
print(a)
a12

  如果括号两边均有限定条件,则为贪婪模式,否则取最小值,两侧都有限定条件如下

 
import re
a = re.search("a(\d+?)b","a15455b").group()
print(a)
a15455b

  无限定条件示例,示例中,+与?的最小匹配次数为1,所以结果是a1

import re
a = re.search("a(\d+?)","a15455b").group()
print(a)
a1

  正则中sub替换方法的使用,在最后可以加一个参数,表示要替换多少次。

import re
a = re.sub("g.t","have","i get a i got b")
print(a) i have a i have b

  subn,替换,并显示替换多少次

import re
a = re.subn("g.t","have","i get a i got b")
print(a)
('i have a i have b', 2)

  

compile方法,可以将某一个规则封装进一个对象,然后进行别的方法调用
import re
txt = "he is good boy"
a = re.compile("\w*oo\w*")
print(a.findall(txt))
['good']

  分割字符的方法split,因为1和4位置会做分割所以边上多出俩空格,规则前加r是为了让r后边的字符串以re模块的方式处理,而不会是python,因为python的

\和正则的\有时候会有冲突,建议添加r,保证正则少出错误。

import re
txt = "1one2two3three4"
a = re.compile(r"\d+")
print(a.split(txt))
['', 'one', 'two', 'three', '']

  “|”为或者的意思,类似or

import re
a = re.findall(("abc|adc"),"adc")
print(a)
['adc']
去除findall优先获取组的内信息的方法?:不加的话默认只返回组内的adc
import re
a = re.findall("www.(?:abc|adc).com","www.adc.com")
print(a)
['www.adc.com']

match,匹配字符串的头部,如果成功返回一个对象,否则返回none

search,匹配整个字符串,匹配到一个之后返回,否则none

findall,匹配全部,获取非重复的匹配列表;如果有一个组则以列表形式返回,且每一个匹配均是字符串;如果模型中有多个组,则以列表形式返回,且每一个匹配均是元祖,空的匹配也会包含在结果中

 

python基础之正则表达式。的更多相关文章

  1. 十七. Python基础(17)--正则表达式

    十七. Python基础(17)--正则表达式 1 ● 正则表达式 定义: Regular expressions are sets of symbols that you can use to cr ...

  2. Python基础之 正则表达式指南

    本文介绍了Python对于正则表达式的支持,包括正则表达式基础以及Python正则表达式标准库的完整介绍及使用示例.本文的内容不包括如何编写高效的正则表达式.如何优化正则表达式,这些主题请查看其他教程 ...

  3. Python高手之路【五】python基础之正则表达式

    下图列出了Python支持的正则表达式元字符和语法: 字符点:匹配任意一个字符 import re st = 'python' result = re.findall('p.t',st) print( ...

  4. python基础之正则表达式

    正则表达式语法 正则表达式 (或 RE) 指定一组字符串匹配它;在此模块中的功能让您检查一下,如果一个特定的字符串匹配给定的正则表达式 (或给定的正则表达式匹配特定的字符串,可归结为同一件事). 正则 ...

  5. python基础之正则表达式和re模块

    正则表达式 就其本质而言,正则表达式(或 re)是一种小型的.高度专业化的编程语言,(在Python中)它内嵌在Python中,并通过 re 模块实现.正则表达式模式被编译成一系列的字节码,然后由用 ...

  6. python基础-RE正则表达式

    re 正则表示式 正则表达式(或 RE)是一种小型的.高度专业化的编程语言,(在Python中)它内嵌在Python中,并通过 re 模块实现.正则表达式模式被编译成一系列的字节码,然后由用 C 编写 ...

  7. Python开发【第一篇】Python基础之正则表达式补充

    正则表达式 一简介:就其本质而言,正则表达式(或RE)是一种小型的.高度专业化的标称语言,(在Python中)它内嵌在Python中,并通过re模块实现.正则表达式模式被编译成一系列的字节码,然后由用 ...

  8. python基础之 正则表达式,re模块

    1.正则表达式 正则表达式:是字符串的规则,只是检测字符串是否符合条件的规则而已 1.检测某一段字符串是否符合规则 2.将符合规则的匹配出来re模块:是用来操作正则表达式的 2.正则表达式组成 字符组 ...

  9. python基础之正则表达式 re模块

    内容梗概: 1. 正则表达式 2. re模块的使⽤ 3. 一堆练习正则表达式是对字符串串操作的一种逻辑公式. 我们一般使用正则表达式对字符串进行匹配和过滤.使用正则的优缺点: 优点: 灵活,功能性强, ...

随机推荐

  1. IOS实现中间凸起圆形TabBar

    中间凸起的圆形TabBar曾经比较流行,类似于闲鱼之类的APP就使用了中间凸起TabBar,这两天自己动手实现了一个,效果图如下: 大致原理:重写UITabBar和UITabBarController ...

  2. led显字风扇原理?

    神奇的是上面的图案居然会变,十分好奇,求告知原理?? 其实就是依靠转速计算出LED灯变化的频率.这点和老式CRT的显示原理差不多.比如说风扇的转速时60rpm就是每分钟60圈,每秒1圈(当然实际转速快 ...

  3. 【python 下载】-各种版本都有!

    python 是一种全功能的语言,2.7很稳定,成熟的版本,且有很多开源的模块. 小编个人觉得python有一个很大的优点,就是语法简练,甚至可以说简单.比起pascal或者 C什么的,简单的难以置信 ...

  4. C#基础总结之八面向对象知识点总结-继承与多态-接口

    .方法深入讲解(返回值,形参与实参) 方法 public int getName(int i,int j) { int sum = i + j; return sum; } .利用泛型存储对象数据 . ...

  5. 用MapX与C#开发地理信息系统

    转:http://www.cnblogs.com/dachie/archive/2010/08/17/1801598.html 第四章 MapX与C#实例... 5 4.1 MapX图层建立... 5 ...

  6. PLSQL快捷补充代码设置

    菜单Tools-->Preferences...然后依次选择下图红色选项 弹出下图对话框 输入需要快速生成的语句点击保存 点击Save后在slq窗口中输入 设置的语句缩写 列入:第一个sf  然 ...

  7. 【Android菜鸟学习之路】环境搭建问题-修改AVD Path

    更改avd默认路径

  8. AC_Dream 1211 Reactor Cooling

    /* 题意:无源无汇,并且每条边的容量有上下界限的网络流问题!既然无源无汇,那么素有的节点都应该满足“入流==出流”! 输出每一条边的流量,使得满足上面的条件.(如果u->v有流量,那么v-&g ...

  9. codeforces C. Design Tutorial: Make It Nondeterministic

    题意:每一个人 都有frist name 和 last name! 从每一个人的名字中任意选择 first name 或者 last name 作为这个人的编号!通过对编号的排序,得到每一个人 最终顺 ...

  10. [ASP.NET] 使用 ASP.NET SignalR 添加实时 Web

    ASP.NET SignalR 是为 ASP.NET 开发人员提供的一个库,可以简化开发人员将实时 Web 功能添加到应用程序的过程.实时 Web 功能是指这样一种功能:当所连接的客户端变得可用时服务 ...