博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python之正则表达式相关知识介绍
阅读量:3958 次
发布时间:2019-05-24

本文共 1817 字,大约阅读时间需要 6 分钟。

Python之正则表达式

正则表达式是用来描述目标字符串特征的一串特殊的文本,它定义了一种匹配模式,可以用来匹配与检索符合该模式的文本。学习正则表达式首先要了解元字符。

元字符 作用
string 匹配包含string的字符串
re1 | re2 匹配正则表达式re1或者re2
^ 匹配以指定字符串开头的字符串
$ 匹配以指定字符串结尾的字符串
. 匹配除\n之外任意字符串
* 匹配0次或者多次前文正则表达式
+ 匹配1次或者多次前文正则表达式
? 匹配0次或者1次前文正则表达式
(…) 匹配括号内的正则表达式并另存为子组
[…] 匹配包含方括号中字符集任一字符的字符串
{} 匹配字符串长度
\d 匹配十进制数字
\w 匹配字母或者数字
\s 匹配空格字符\n、\t、\r、\v、\f 等

常用的正则表达式函数:

  1. match():从字符串的起始位置开始匹配;若匹配成功,则返回匹配对象,否则返回None。
>>> import re>>> s="python1 python2 python3 python">>> print(re.match("python",s))
>>> s1="P python1 python2 python3 python">>> print(re.match("python",s1))None
  1. search():与match()函数类似,不同的是search()函数不要求从字符串起始位置开始匹配。
>>> import re>>> s1="P python1 python2 python3 python">>> print(re.search("python",s1))
  1. findall():用于查找字符串中所有符合正则表达式的字符串,返回一个列表。
>>> import re>>> s="python1 python2 python3 python">>> print(re.findall("python",s))['python', 'python', 'python', 'python']
  1. split():用于按某个字符将目标字符串分解成若干个部分,并将这些部分以列表的形式返回。
>>> import re>>> s = "python1 python2 python3 are all python">>> print(re.split(" ",s))['python1', 'python2', 'python3', 'are', 'all', 'python']
  1. sub():用于将目标字符串中的某些字符替换成指定字符串。
>>> import re>>> s = "python1 python2 python3 are all python">>> print(re.sub("python","Python",s))Python1 Python2 Python3 are all Python
  1. group()和groups():当匹配没有子组要求(子组要求即正则表达式中包含(…)元字符,系统会匹配括号内的正则表达式并另存为子组)时,group()会返回整个匹配结果,而groups()会返回一个空元组。
>>> import re>>> s = "python1 python2 python3 are all python">>> a = re.search("python",s)>>> a.group()'python'>>> a.groups()()>>> b = re.search("([a-z]*)([0-9]*)",s)>>> b.group()'python1'>>> b.group(2)'1'>>> b.groups()('python', '1')
  1. compile():编译函数,可以缩短正则表达式的匹配时间,因为未经预编译的字符串在匹配过程中需要解释器来编译,当匹配次数巨大时,该函数起非常大的作用。
>>> import re>>> s = "python1 python2 python3 are all python">>> pattern = re.compile(r"([a-z]*)([0-9]*)")>>> b = pattern.search(s)>>> b.group()'python1'

转载地址:http://dxozi.baihongyu.com/

你可能感兴趣的文章
性能调优之Weblogic调优
查看>>
性能调优之性能参数指标
查看>>
POJ3009---冰壶游戏(深搜剪枝+回溯)
查看>>
POJ3669---跳炸弹(广搜)
查看>>
POJ---1384Piggy-Bank (完全背包+装满问题)
查看>>
并查集基础知识
查看>>
POJ1182---食物链(带权并查集~技巧性超强的解法)
查看>>
POJ2492---A Bug's Life(做完食物链,再秒这个)
查看>>
POJ2063---Investment(完全背包)
查看>>
POJ1458---(最长公共子序列最基础题)
查看>>
POJ3356---(最长公共子序列)
查看>>
二叉树基础知识大全(核心理解遍历)
查看>>
03-树1 树的同构(25 分) 2017秋 数据结构 陈越、何钦铭
查看>>
04-树4 是否同一棵二叉搜索树(25 分)---陈越、何钦铭-数据结构-2017秋
查看>>
表达式求值(C实现,实现多括号,浮点数)---栈的实现以及运用。
查看>>
有序链表的合并(数据结构---单链表)
查看>>
栈实现(数据结构---数组,链表 C实现)
查看>>
POJ3903(dp,最长上升子序列,最基础题)
查看>>
POJ1836-Alignment(最长上升子序列)
查看>>
POJ 1251 Jungle Roads(最小生成树简单题)
查看>>