python——正则表达式

python——正则表达式

  • 1、简介
  • 2、常用的元字符
  • 3、常用表达式举例
  • 4、运算符优先级
  • 5、常用正则表达式
  • 6、python 正则的简单使用
    • 6.1 贪婪模式与非贪婪模式
    • 6.2 转义字符的使用
    • 6.3 除了换行符之外的匹配(想匹配换行符需添加修饰符)
    • 6.4 纯数字的正则
    • 6.5 匹配判断的方法
    • 6.6 范围运算 [123] [1-9]
    • 6.7 正则的方法

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) # 返回结果为列表

你可能感兴趣的:(python常用库,python,正则表达式)