我是靠谱客的博主 粗心画笔,最近开发中收集的这篇文章主要介绍Python笔记3-正则表达式,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

  1. 正则表达式中常用的字符

符号 描述

. 匹配任意一个字符(除了n)

[] 匹配列表中的字符

w 匹配字母、数字、下划线,即 a-z,A-Z,0-9,_

W 匹配不是字母、数字、下划线

s 匹配空白字符,即空格(n,t)

S 匹配不是空白的字符

d 匹配数字,即 0-9

D 匹配非数字的字符

^ 匹配字符串开头

$ 匹配字符串结尾。

b 匹配一个单词的边界

B 匹配非单词的边界

【注】^与[^m]中的“^”的含义并不相同,后者“^”表示“除了….”的意思

2、re.match只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回None;而re.search匹配整个字符串,直到找到一个匹配。

3、贪婪模式指 Python 里数量词默认是贪婪的,总是尝试匹配尽可能多的字符。非贪婪模

式与贪婪相反,总是尝试匹配尽可能少的字符,可以使用"*","?","+","{m,n}"后面加上?,使

贪婪变成非贪婪

4、只配置中文

s = "士大夫卡A
的24东走西顾堪"
filtrate = re.compile(u'[^u4E00-u9FA5]')
filtered_str = filtrate.sub(r'', s)
print(filtered_str)
#输出
#士大夫卡的东走西顾堪

5、Python 的 re 模块提供了re.sub用于替换字符串中的匹配项。

re.sub(pattern, repl, string, count=0, flags=0)

参数:

  • pattern : 正则中的模式字符串。
  • repl : 替换的字符串,也可为一个函数。
  • string : 要被查找替换的原始字符串。
  • count : 模式匹配后替换的最大次数,默认 0 表示替换所有的匹配

import re
phone = "1-1452839475-4352 #Location oscar retwertqe"
# 去掉location前面的字符
num = re.sub(r'^.*[lL]ocation', "location", phone, 1)
print("电话号码是: ", num)
# 删除非数字(-)的字符串
num = re.sub(r'D', "", phone)
print("电话号码是 : ", num)

6、re.compile 函数 :参考Python 正则表达式 | 菜鸟教程

compile 函数用于编译正则表达式,生成一个正则表达式( Pattern )对象,供 match() 和 search() 这两个函数使用。

re.compile(pattern[, flags])

参数:

  • pattern : 一个字符串形式的正则表达式

  • flags : 可选,表示匹配模式,比如忽略大小写,多行模式等,具体参数为:

    1. re.I 忽略大小写
    2. re.L 表示特殊字符集 w, W, b, B, s, S 依赖于当前环境
    3. re.M 多行模式
    4. re.S 即为 . 并且包括换行符在内的任意字符(. 不包括换行符)
    5. re.U 表示特殊字符集 w, W, b, B, d, D, s, S 依赖于 Unicode 字符属性数据库
    6. re.X 为了增加可读性,忽略空格和 # 后面的注释

pattern = re.compile(r'([a-z]+) ([a-z]+)', re.I) #re.I 忽略大小写
m = pattern.match('Hello World Wide Web')
print(m)
print(m.group(0))
print(m.groups())
#输出结果:
#<re.Match object; span=(0, 11), match='Hello World'>
#Hello World
#('Hello', 'World')

7、查找到了就打印:

re.match只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回None;而re.search匹配整个字符串,直到找到一个匹配。

import re
line = "Cats are smarter than dogs";
matchObj = re.match( r'dogs', line, re.M|re.I)
if matchObj:
print "match --> matchObj.group() : ", matchObj.group()
else:
print "No match!!"
matchObj = re.search( r'dogs', line, re.M|re.I)
if matchObj:
print "search --> searchObj.group() : ", matchObj.group()
else:
print "No match!!"

最后

以上就是粗心画笔为你收集整理的Python笔记3-正则表达式的全部内容,希望文章能够帮你解决Python笔记3-正则表达式所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(37)

评论列表共有 0 条评论

立即
投稿
返回
顶部