#! /usr/bin/env python
# -*- coding:utf-8 -*-
import re
# 正则表达式:re模块
# 1.普通字符:大多数字符和字母都会跟自身匹配
# re.fiandall() 返回一个列表
#2.元字符:
# . 通配符 一个只能匹配一个结果
# ^ 以xx开头的匹配
# $ 以xx为结尾的
# * 重复 匹配0到多次
# + 重复 匹配1到多次
# ? 匹配0到1次
# {m,n} 匹配前一个元字符m到n次
# \\ 转义字符 其后字符失去特殊元字符含义
#[] 字符集 可匹配任意一个字符
# | 或 逻辑表达式
# \d = [0-9] 匹配一个数字
# \D = [^0-9] 匹配非数字
# \s 匹配任意空白字符
# \S 匹配非空白字符
# \w =[a-zA-Z_] 匹配数字、字母、下划线中任意一个字符
# \W 匹配非数字、字母、下划线中的任意字符
#3.模式
# I 忽略大小写模式
# L 字符集本地化
# M 多行模式
# S 此模式下.可匹配包括换行符在内的任意字符
# X 冗余模式 忽略表达式中的空白和注释
# findall(pattern, string, flags=0)
str = "WoshiZhongGuoRen"
regex0 = re.findall("guo",str)
regex1 = re.findall("guo",str,re.I)
print(regex0)
print(regex1)
str1 = ‘‘‘where are you
I an here
oh I see‘‘‘
index0 = re.findall("^\w+",str1)
index1 = re.findall("^\w+",str1,re.M)
print(index0)
print(index1)
#4.函数
#邮箱正则表达式
#compile(pattern, flags=0) 使用 compile 函数预编译出一个正则模式之后再去使用,这样在后面的代码中可以很方便的复用它
#编译其实是很费时的,这样可以提升效率
str2 = "23223whh./#[email protected]"
emailregex = re.compile("[0-9a-zA-Z_]{0,19}@[0-9a-zA-Z]{1,13}\.[com,cn,net]{1,3}")
index2 = emailregex.findall(str2)
print(index2)#[‘[email protected]‘]
#match(pattern, string, flags=0)
# 使用指定正则去待操作字符串中寻找可以匹配的子串, 返回匹配上的第一个字串,并且不再继续找
#从字符串开始处开始查找的,如果开始处不匹配,则不再继续寻找,找不到时返回 None
index3 = emailregex.match(str2)
print(index3)#None
#search(pattern, string, flags=0)
#不限制正则表达式的开始匹配位置
index4 = emailregex.search(str2)
print(index4)#<_sre.SRE_Match object; span=(12, 27), match=‘[email protected]‘>
#split(pattern, string, maxsplit=0, flags=0)
#maxsplit 指定切分次数
#函数使用给定正则表达式寻找切分字符串位置,返回包含切分后子串的列表
# 如果匹配不到,则返回包含原字符串的一个列表
index5 =emailregex.split(str2)
print(index5)#[‘23223whh./#$‘, ‘rtdfd‘]
#sub(pattern, repl, string, count=0, flags=0)
#将正则表达式 pattern 匹配到的字符串替换为 repl 指定的字符串
#参数 count 用于指定最大替换次数
index6 = emailregex.sub(‘world‘,str2)
print(index6)#23223whh./#$worldrtdfd
#5.组(组与Match对象是Python正则式的重点)
#(?P<name>...) 分组的命名模式,取此分组中的内容时可以使用索引也可以使用name
#(?P=name) 分组的引用模式,可在同一个正则表达式用引用前面命名过的正则
str3 = "tom 19 05317652"
p=re.compile(r‘(?P<name>[a-z]+)\s+(?P<age>\d+)\s+(?P<tel>\d+).*‘, re.I)
p.groupindex
index7 = p.match(str3)
print(index7)
print(index7.group())
print(index7.group(‘age‘))
python 正则表达式
Posted wuxinyan
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 正则表达式相关的知识,希望对你有一定的参考价值。
以上是关于python 正则表达式的主要内容,如果未能解决你的问题,请参考以下文章