本文将介绍几个最常用的正则符号,以及正则表达式的应用场景。

如果说【数学表达式】刻画的是数字的内在规律,那么【正则表达式】则是用来刻画和描述字符串内在规律的表达式。记得刚接触python时学习过slice,replace,split等方法,但是一旦遇到复杂的情况这些工具就不能使用了。这个时候【正则表达式】就派上了用场。

使用正则表达式需要导入【re模块包】

import re

主要有三种使用场景

场景1:无法通过切片将字符串的子串返回 findall函数

#语法

findall(pattern,string,flags=0)

pattern:指定需要匹配的正则表达式

string:指定待处理的字符串

flags:指定匹配模式,常用的值可以是re.I,re.M,re.S,re.X

re.I模式是让正则表达式对大小写不敏感

re.M模式是让正则表达式可以多行匹配

re.S模式是指正则符号可以匹配任意字符,包括换行符\n

re.X模式允许正则表达式可以写得更加详细,如多行表示,忽略空白字符,加入注释等

场景2:借助replace无法完成非固定值或非固定位置值的替换 sub函数

#语法

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

pattern:指定需要匹配的正则表达式

repl:指定替换成的新值

string:指定待处理的字符串

count:用于指定最多替换的次数,默认0为全部替换

flags:同findall函数中的flags

场景3:借助于split方法无法按照多种值实现字符串的分割 re.split函数

#语法

split(pattern,string,maxsplit=0,flags=0)

pattern:指定需要匹配的正则表达式

string:指定待处理的字符串

maxsplit:用于指定最大分割次数,默认0为全部分割

flags:同findall中的flags

常用的正则符号(注意组合使用)原字符

2. 英文状态的句号点 .

3. 反斜杠 \

4. 英文状态的中括号[]

5. 英文状态的圆括号()

6. 英文状态的问号?

7. 加号+

8. 星号 *

9. 英文状态的大括号{}

下面一一举例介绍:原字符

指代直接存在于字符串内部的子串

#导入第三方模块包

import re

#提取字符串中的子串

s1='python是一门计算机程序语言,python语言具有简洁性、易读性等特点'

re.findall('python',s1)

2. 英文状态的句点号 .

指代任意字符(如数字、字母、标点符号、汉字等),但除了换行符\n

#提取出动力总成的值

s2='此次新朗逸主要搭载了1.5L和1.5T两种动力总成的发动机。别克英朗则搭载了1.0T和1.3T的动力总成。'

#写法1

re.findall('1...',s2)

#写法2用到转义字符\

re.findall('1\...',s2)

3. 反斜杠 \

\n 换行

\t Tab制表符

\d 0-9中的任一数字

\s 任意一种空白(如空格、Tab、换行等)

\w 字母、数字、下划线中的任意一种(63种:52种字母大小写,数字0-9共10种,_1种)

\. 句号点本身

\\ \本身

#剔除字符串中的所有空白

s3=' 距离2019北京马拉松开跑只有两周时间了,\n今年的北京马拉松预报名人数超过16万人,\t媒体公布的

中签率只有16%左右,再创历年来的新低。\n'

print(s3)

re.sub('\s','',s3)

4. 英文状态的中括号[]

指代字符集合,当需要特定字符匹配时,可以选择中括号

#取出手机号信息

s4='用户联系方式:13612345566,用户编号:11011254321'

re.findall('1[356789]\d\d\d\d\d\d\d\d\d',s4)

#提取出动力总成

s5='通过对比新朗逸1.5L和1.5T两种动力在1.5年行使期后的数据。发现1.5T的口碑相对较好!'

re.findall('1.5[a-zA-Z]',s5)

re.findall('1.5[LT]',s5)

5. 英文状态的圆括号()

指代特定内容的截取

#提取出用户的年龄

s6='id:1,name:Tom,age:3,gender:1;id=2,name=Lily,age=5,gender=0'

print(re.findall('\d',s6))

print(re.findall('age:\d',s6))

print((re.findall('age:(\d)',s6)))

6.英文状态的问号 ?

表示匹配前一个字符0次或1次

#超链接的匹配

URL1='https://www.baidu.com/'

URL2='http://www.gov.cn/'

pattern='https?://www\..*?\..*?/'

7. 加号+

表示匹配前一个字符一次及以上

#邮箱地址的匹配

email1='Lsxxx2011@163.com'

email2='654088115@qq.com'

pattern='[0-9a-zA-Z_\.\-]+@[0-9a-zA-Z_\-]+\.com'

8. 星号*

表示匹配前一个字符0次及以上

#提取出产品名称中含有奶粉字样的产品

prod=['婴儿袜','亨氏奶粉','奶粉勺','多功能奶瓶','幼儿奶粉量筒','磨牙棒']

res[]

for i in prod:

res.extend(re.findall('.*奶粉.*',i))

res

# extend()函数用于在列表末尾一次性追加另一个序列中的多个值

9. 英文状态的大括号{}

表示匹配前一个字符特定的次数或范围

{m} 匹配前一个字符m次

{m,} 匹配前一个字符至少m次

{m,n} 匹配前一个字符m~n次

{,n} 匹配前一个字符之多n次

#手机号码的匹配

pattern='1[356789]\d{9}'

#至少6个长度的密码

pattern='\w{6,}'

#区号信息

pattern='0\d{2,3}'

正则表达式的案例应用取出字符中所有的天气状态

import re

string = "{ymd:'2018-01-01',tianqi:'晴',aqilnfo='轻度污染'},

{ymd:'2018-01-02',tianqi:'阴~小雨',aqilnfo='优'},

{ymd:'2018-01-03',tianqi:'小雨~中雨',aqilnfo='优'},

{ymd:'2018-01-04',tianqi:'中雨~小雨',aqilnfo='优'}"

print(re.findall("tianqi:'(.*?)'",string))

#.*?组合 防止盲目匹配,非贪婪式搜索

2. 取出所有含O/o字母的单词

import re

string2='Together,we discovered that a free market only thrives when there are rules to

ensure competition and fair play,Our celebration of initiative and enterprise.'

print(re.findall('\w*o\w*',string2,flags=re.I))

3. 将标点符号、数字和字母删除

import re

string3='据悉,这次发运的4台蒸汽冷凝罐属于国际热核聚变实验堆 (ITER)项目的核二级压力设备,先后完成

了压力试验,真空试验、氦气检漏实验,千斤顶试验,吊耳荷载试验,叠装试验等验收试验'

print(re.sub('[,。、a-zA-Z0-9()]',"",string))

4.将每一部分的内容分割开

import re

string4='2室2厅|101.62平|低区/7层|朝南\n 上海未来-浦东-金杨-2005年建'

split=re.split('[-\|\n]',string4) #|代表或,所以要用转义字符\

print(split)

split_strip=[i.strip() for i in split]

print(split_strip)

python 正则findall右斜杠_python中正则表达式的使用相关推荐

  1. python正则findall函数的用法_python中正则表达式 re.findall 用法

    python中正则表达式 re.findall 用法 Python 正则表达式 正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配. Python 自1.5版本起增加了r ...

  2. python右斜杠_Python中的左斜杠、右斜杠(正斜杠和反斜杠)

    首先,"/"左倾斜是正斜杠,"\"右倾斜是反斜杠,可以记为:除号是正斜杠一般来说对于目录分隔符,Unix和Web用正斜杠/,Windows用反斜杠,但是现在Wi ...

  3. python中反斜杠_Python中的正斜杠/与反斜杠\

    知识点: 1. "/"左倾斜是正斜杠,"\"右倾斜是反斜杠,可以记为:除号是正斜杠 2. 对于目录分隔符,Unix和Web用正斜杠/,Windows用反斜杠\. ...

  4. python中双反斜杠_python中的反斜杠问题深入讲解

    前言 python本身使用 \ 来转义一些特殊字符,比如在字符串中加入引号的时候 s = 'i\'m superman' print(s) # i'm superman 为了防止和字符串本身的引号冲突 ...

  5. python百分号和斜杠_Python中正反斜杠(‘/’和‘\’)的意义与用法

    刚刚在学习些测试报告的时候,出现一个路径的问题,找了很久的原因,竟然是少了一个反斜杠引起的,在此顺便记录一下正反斜杠的作用. 在Python中,记录路径时有以下几种写法,如:(大家都知道\n是换行的意 ...

  6. python中怎么输入正斜杠_Python中的正斜杠与反斜杠

    (一)目录中的斜杠们 python读文件需要输入的目录参数,列出以下例子: path = r"C:Windowsempeadme.txt" path1 = r"c:win ...

  7. vb.net 正则 替换 第n个_Python中正则表达式模块详解

    作者:python来源:SegmentFault 思否社区 正则表达式用来处理字符串,对字符串进行检索和替换,另外正则在python爬虫的应用也是相当广泛! 特点 灵活性.逻辑性和功能性非常强 可以迅 ...

  8. python怎么输出斜杠_python如何输出反斜杠

    python如何输出反斜杠,斜杠,字符串,引号,几个,写法 python如何输出反斜杠 易采站长站,站长之家为您整理了python如何输出反斜杠的相关内容. python本身使用 \ 来转义一些特殊字 ...

  9. Python基础_第3章_Python中的循环结构

    Python基础_第3章_Python中的循环结构 文章目录 Python基础_第3章_Python中的循环结构 Python中的循环结构 一.回顾分支练习题 1.判断是否为一个合法三角形 2.求世界 ...

最新文章

  1. LSTM CNN GRU DGA比较
  2. JavaScript强化教程——JavaScript 运算符
  3. LeetCode Decode String(栈和递归)
  4. Java 中的字符串(String)与C# 中字符串(string)的异同
  5. Oracle-数据泵expdp/impdp实操
  6. 2021-03-09 PPT字号设置规则和图片网站(from 旁门左道)
  7. swagger 怎么去掉get delete_自学 Java 怎么入门?
  8. 安卓开发面试题!带着问题深入学习Handler,进阶学习资料!
  9. .describe() python_python的apply应用:一般性的“拆分-应用-合并”,附加详细讲解
  10. mysql 8.0远程连接_mysql8.0 安装 修改密码 允许远程连接
  11. linux 影院 ftp客户端20端口号,Linux下的ftp客户端说明文档
  12. 黑马程序员--java基础加强之内省(IntroSpector)
  13. 论docker中 CMD 与 ENTRYPOINT 的区别
  14. uniapp打开App Store下载页面
  15. 苹果视频剪辑计算机配置,视频剪辑后期神器-创作PC黑苹果系统安装与台式电脑配置推荐...
  16. android studio改java,Android Studio如何修改快捷键
  17. 安装Microsoft Visual Studio 2010 Service Pack 1 ,系统无法找到指定的对象
  18. Leetcode994腐烂的橘子(广度搜索法)
  19. 数据库索引,真的越建越好吗?
  20. 字典特征提取,文本特征提取。

热门文章

  1. 小米被怒怼?微鲸人工智能技术实力低调
  2. stm8s: GPIO配置,点亮LED!PB4,PB5引脚LED点不亮
  3. vue全局过滤器配置
  4. 票务系统相关业务流程
  5. 职业生涯:我在阿里的一次JAVA面试经历总结(跳槽,深薪必备)
  6. java实现等腰三角形星字塔
  7. 华清远见重庆中心——前端阶段个人总结
  8. JDBC连接MySQL时日志出现警告WARN: Establishing SSL connection without server's identity verification is not re
  9. java开发者工具IDEA自定义设置主题/字体/字号大小
  10. 词向量模型Word2Vec