Python正则表达式教程_python正则表达式匹配中文

Python正则表达式教程_python正则表达式匹配中文????今天我们来学习python的正则表达式的部分,先说下为什么要学习这一部分呢,当然是因为正则表达式处理文本类型的数据实在是太方便了。为以后进入nlp领域打打基础!先给大家推荐一个网站:用于正则表达式验证.大致就长这个样子。这里写目录标题1.基础知识2.贪婪模式和非贪婪模式3.反斜杠的用途4.中括号的用法5.匹配启始和结束位置6.括号的用法—组选择7.正则表达式切割字符总结1.基础知识普通字符:普通字符的含义就是字节匹配他们。特殊字符:它们出现在正则表达式中,不是直接匹配他们,而是

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

?今天我们来学习python的正则表达式的部分,先说下为什么要学习这一部分呢,当然是因为正则表达式处理文本类型的数据实在是太方便了。为以后进入nlp领域打打基础!

先给大家推荐一个网站: 用于正则表达式验证.
大致就长这个样子。
在这里插入图片描述

1.基础知识

  • 普通字符:普通字符的含义就是字节匹配他们。
  • 特殊字符:它们出现在正则表达式中,不是直接匹配他们,而是表达一些特殊的含义。

.表示匹配除了换行符之外的任何单个字符

例如匹配‘’.公司‘’(匹配三个字符)

#这里展示一下python怎么使用正则表达式
import re #正则表达式的库
content=''' 苹果是红色 香蕉是黄色 叶子是绿色 天空是蓝色 '''
#将表达式转化为pattern对象,就可以调用后面的find之类的方法
p=re.compile(r'.色')
for i in p.findall(content):
    print(i)

结果如下:
在这里插入图片描述

*表示匹配前面的子表达式任意次,包括0次

例如:匹配,.*表示匹配,以及后面的所有字符
在这里插入图片描述

当然前面可以跟普通字符 “好” 匹配 “好好好…”

+表示匹配前面的子表达式一次或者多次,不包括0次

区别就是不包括0次。
+号的(不能0次)
在这里插入图片描述
*号的(可以0次)
在这里插入图片描述

{ }匹配前面的字符指定的次数

例如:表达式”油{2,4}”表示匹配油字最少2次最多4次
在这里插入图片描述

2.贪婪模式和非贪婪模式

不知道大家看懂了下面的这张图吗?
我们只想一个一个匹配

<head><title>

标签,但是它却帮我吗全部都匹配上了,这是因为它只看见了第一个 “< ”和左后一个“>”中间部分全部看成了任意字符,这就是贪婪模式,它会最大限度地匹配字符。
在这里插入图片描述
要想变成非贪婪模式,需要在‘+’,”*“后面加一个‘?’ 这样子就是匹配4个字符。
在这里插入图片描述

3.反斜杠的用途

反斜杠 \ 在正则表达式中多种用途,比如转义

例如:我们需要寻找.之前的所有元素 需要使用 . ∗ / . .*/. ./.斜杠是为了告诉程序后面一个字符代表普通字符.的含义
在这里插入图片描述

反斜杠可以和一些字符组合表示一些特殊字符
在这里插入图片描述

4.中括号的用法

中括号可以用来表示条件或[0123] 或者[0-3]代表这个字符可以是0,1,2,3
也可以存放字符[黄红绿蓝]、[a-z]这一类

例如:匹配包含‘’是[黄红绿蓝]色‘’的字符
在这里插入图片描述

需要说明一些元字符在[]中就是失去了自己的意义,变成普通字符了
例如. + *不需要转义。‘

例如查找“.是”的字符
在这里插入图片描述

如果在[]中使用^字符,则表示非的概念

例如:匹配非数字字符
在这里插入图片描述

5.匹配启始和结束位置

^表示匹配文本启始的位置但在不同模式下效果不一样
正则表表达式主要有2种模式:单行模式和多行模式
单行模式:是指把整个文本看作是一组数据,只匹配所有数据的开头
多行模式:是指把每一行看成是一组数据,匹配每一行的开始

例如:我们使用单行模式匹配,只匹配了第一行的001
在这里插入图片描述
例如:我们使用多行匹配,匹配到了001、002、003
在这里插入图片描述
问题来了,在python中如何制定是是单行还是多行模式呢?
在compile里面增加参数re.M或者re.MULTILINE都行。
在这里插入图片描述
结果如下:
在这里插入图片描述

$表示文件的结尾,用法和^类似,也分多行模式和单行模式

单行模式

在这里插入图片描述

多行模式
在这里插入图片描述

6.括号的用法—组选择

组选择:是指从正则表达式匹配的结果中再选择出我们所需要的字符,例如:我们需要匹配逗号前面的字符,我们可能会写“.*,”可是这样匹配出来的字符中含有逗号,可我们不想要这个逗号,这时就需要用组选择。
在这里插入图片描述
看一看python的写法
在这里插入图片描述
如果遇见多个分组,那么每一行的数据就会变成元组,你可以通过元组下标来取出对应的字符。
在这里插入图片描述
来一个小练习:给你一组数据,请从中选出人名和电话号码

苹果,电话123131
香蕉,电话234241
叶子,电话245363
天空,电话124234

python实现如下:
在这里插入图片描述

7.正则表达式切割字符

字符串对象的split()方法只适用于非常简单的字符串分割情形,当你需要更加灵活的切割字符的时候,就需要用正则表达式了
例如:

#我们这里有一组数据
names=‘关羽;张飞,马超,老夫子,李元芳 狄仁杰’

这应该如何切割呢?
我们可以利用re.split用正则表达式的符号来制定分隔符。
在这里插入图片描述

总结

这一这章节主要是进行正则表达式的基础学习,当作一个小小的入门教程还是很不错的,日后碰见复杂的用法会继续添加。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/186145.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • ideamaven仓库设置_搭建maven仓库

    ideamaven仓库设置_搭建maven仓库1、Maven下载在maven官网下载maven安装:http://maven.apache.org/download.cgi下载之后解压到安装路径:完成安装。2、Maven本地仓库配置在本地新建本地仓库文件夹,替代默认新建在系统盘的仓库地址,因为随着时间,仓库会越来越大,所以建议自己新建一个本地仓库:Maven远程库也是位于网络上的存储库。因为maven在获取需要的jar包时会首先从本地仓库获取,当本地仓库不存在需要的jar包时会从setting.xml的…

    2022年9月23日
    2
  • 2018一战硕士考研风雨路「建议收藏」

    2018一战硕士考研风雨路「建议收藏」写以此文,记录我在考研过程中的收获。(注:文章将以日记体形式呈现,文章较长,请耐心阅读)2017.7.10:考研生涯第一天今天开始我在家考研生涯的第一天,怎么说呢,这个结果还是感到有些意外的,因为我本来是计划留校学习的,但学校今年很特殊,要封校,无奈我经过认真考虑后,还是决定回家复习。第一天本想着调整下时差,早上七点起的,结果还是老样子八点半醒来了,洗漱了一下,吃完老妈做的早饭,于…

    2022年5月5日
    44
  • Python数字型整理(整型、布尔型、浮点型、复数、操作符、内建函数与工厂函数、控制数字精度)

    Python数字型整理(整型、布尔型、浮点型、复数、操作符、内建函数与工厂函数、控制数字精度)数字提供了标量贮存和直接访问 它是不可更改类型 也就是说变更数字的值会生成新的对象 这个过程对程序员和用户是透明的 Python 支持多种数字类型 整型 布尔型 双精度浮点型和复数 整型 Python 里面的整型默认就能表示很大的整型 可以是十进制 八进制 十六进制 八进制以 0o 开头 第一个字符是数字 0 第二个字符是字母 o 或 O 十六进制以 0x 开头 第一个字符是数字 0 第二个字符是字母 x 或 X 十进制在 Python3 x 版本中不支持后面加 l 或 L print print 0

    2025年9月25日
    2
  • dedecsm系统(企业简介)类单栏目模版如何修改和调用整理

    dedecsm系统(企业简介)类单栏目模版如何修改和调用整理

    2021年9月19日
    50
  • 详解HTML超链接

    详解HTML超链接超链接是互联网提供的最令人兴奋的创新之一,它们从一开始就一直是互联网的一个特性,使互联网成为互联的网络。HTML超链接也是各个网站网页之间实现相互连接的一个手段之一,被广泛应用在各大网站。HTML超

    2022年7月4日
    33
  • 三菱PLC学习方法分享

    三菱PLC学习方法分享  学习plc不是为了研究,而是为了工作需要和应用。下面是我学习PLC的方法,供大家参考!  与PLC自动化相关的知识点很多,比如PLC控制、模拟控制、定位、通信、配置、嵌入式系统、变频器、机械传动、液压系统(不知道是不是自动化)等。知识点太多。以常见的PLC为例,三菱、西门子、欧姆龙、松下、LG、达美、卡恩斯等品牌,加上各种国产品牌和众多知识点。如何学好它们?我理解的学习方法是“巧学”。  以我熟悉的三菱plc为例:  一、基础:一定要打好基础——基础是什么?  1.安装编程软件。  

    2022年10月9日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号