python——正则表达式

python——正则表达式,第1张

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

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/567848.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-09
下一篇 2022-04-09

发表评论

登录后才能评论

评论列表(0条)

保存