python——正则表达式

1、简介

  • 正则表达式是对字符串(包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为“元字符”))操作的一种逻辑公式,
  • 就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。
  • 正则表达式是一种文本模式,该模式描述在搜索文本时要匹配的一个或多个字符串。

2、常用的元字符

元字符含义
\转义字符
.匹配除换行(\n)以外的所有字符
^匹配字符串的开始位置,在集合([])中表示“非”
$匹配字符串的结束位置
?匹配前面的子表达式0次或1次
*匹配前面的子表达式0次或多次
+匹配前面的子表达式至少1次
()标记一个子表达式的开始和结束位置,其结束符号")"是元字符
[]字符组的起始符号,其结束符号"]"不是元字符
{}标记限定符的开始,其结束符号"}"不是元字符
|表示或

3、常用表达式举例

表达式含义
\w匹配字母、数字、下划线
\W匹配非字母、数字、下划线
\d匹配数字
\D匹配非数字
\b匹配单词的开始或结束
\B匹配非单词的开始或结束
\s匹配任何空白字符 如回车、空格、制表符等 [\f\n\r\t\v]
\S匹配任何非空白字符
{n}匹配前面子表达式n次
{n,m}匹配前面子表达式n到m次
{n,}匹配前面子表达式n次以上
[xyz]表示字符集,匹配所包含的任意字符
[a-z]表示字符范围,能匹配范围内的任意字符
(abc)组合,将这n个项组合为一个单元,可以对这n个单元使用限定符

4、运算符优先级

运算符优先级说明
\最高转义字符
() (?: ) (?=) []圆括号和方括号
* + ? {n} {n,} {n,m}限定符
^ $ \ 任何元字符 任何字符定位符和序列
|最低

5、常用正则表达式

1、汉字:^[\u4e00-\u9fa5]{0,}$
2、英文和数字:^[A-Za-z0-9]+$
3、由数字、26个英文字母或者下划线组成的字符串:^\w+$
4、中文、英文、数字包括下划线:^[\u4e00-\u9fa5A-Za-z0-9_]+$
5、Email地址:^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$
6、InternetURL: ^https://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$

6、python 正则的简单使用

正则里面严格区分大小写

import re

6.1 贪婪模式与非贪婪模式

one = "m123456npkdaaidjifn"
pattern = re.compile("^m(.*)n$")# 贪婪模式
pattern.findall(one) # findall 返回列表

pattern = re.compile("^m(.*?)n$") # 非贪婪模式
pattern.findall(one)

6.2 转义字符的使用

one = "a\n"
pattern = re.compile("a\\n")
pattern.findall(one)

6.3 除了换行符之外的匹配(想匹配换行符需添加修饰符)

one = """
            mshfsafjsahfsdsdn
            1231564684899848n
"""
pattern = re.compile("m(.*)n")
pattern.findall(one)
pattern = re.compile("m(.*)n",re.S) # 添加修饰符会匹配换行符
pattern.findall(one)
one = """
            mshfsafjsahfsdsdN
            1231564684899848N
"""
pattern = re.compile("m(.*)n",re.I) # 添加修饰符忽略大小写
pattern.findall(one)

6.4 纯数字的正则

one = "12344569878"
pattern = re.compile("\d")
pattern.findall(one)

6.5 匹配判断的方法

one = "1234a"
pattern = re.compile("\d+")
result = pattern.match(one) # 返回是否匹配成功 并且从头开始匹配
result.group()

6.6 范围运算 [123] [1-9]

one = "123456"
pattern = re.compile("[123]")
pattern.findall(one)
pattern = re.compile("[1-9]")
pattern.findall(one)

6.7 正则的方法

  • findall:查找符合正则的内容 并返回列表
  • match:从头头匹配 匹配一次 返回匹配是否成功的结果
  • search:从任意位置匹配一次 返回匹配是否成功的结果
  • sub:替换字符串
  • split:拆分字符串
one = "123abc"
pattern = re.compile("\d+")

# match
pattern.match(one)
two = "abc123"
pattern.match(two)

# search
result = pattern.search(two)
result.group()

# findall
pattern.findall(one)

# sub
pattern.sub("wj",one) # 第一个参数为要替换后的内容 第二个参数为替换前的内容

# split
three = "abc 123"
pattern = re.compile(" ")
pattern.split(three) # 返回结果为列表
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值