机器学习与数据科学-专题1 Python正则表达式-【正则表达式入门-1】

这篇具有很好参考价值的文章主要介绍了机器学习与数据科学-专题1 Python正则表达式-【正则表达式入门-1】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

第一关

相关知识

为了完成本关任务,你需要掌握:

在 Python 中使用正则表达式;
最基础正则表达式;
正则匹配函数。
在 Python 中使用正则表达式
正可谓人生苦短,我用 Python。Python 有个特点就是库非常多,自然拥有正则匹配这种常见的库,并且此库已经嵌入在 Python 标准库中,使用起来非常方便,只需要在代码中导入 re 模块即可。

import re
Python 的 re 模块,使得 Python 具备了使用全部正则表达式的功能。为了让我们灵活的使用正则表达式,现在咱们的任务就是学习正则在 re 库中的使用。

最基础正则表达式
正则表达式是一个以简单直观的方式通过寻找模式匹配文本的工具。
听起来比较复杂,实际非常简单,下面开始体验最简单的正则表达式。最简单的正则表达式是些仅包含简单字母数字字符的表达式——不包含任何其他字符,在这种情况下正则表达式完完全全就是一个正常的字符串。

举例说明,我们要匹配 张明,那么 张明 这两个字符就是我们需要的正则表达式。

正则匹配函数
知道了最基础正则表达式,可是如何在 python 中使用了?首先我们学习第一个函数,search() 函数,它的目的是接收一个正则表达式和一个字符串,并返回发现的第一个匹配的字符串。

import re
a = re.search(r'fox','the quick brown fox jumpred')  #第一个参数为正则表达式,第二个参数为要处理的字符串
print(a.span())      # span方法获取的是正则表达式匹配到的位置
b =  re.search(r'www','the quick brown fox jumpred') 
print(b)   #如果匹配不到则会返回None
输出如下:

(16, 19)
None
如何匹配到了,我们输出他在正则表达式中的位置,如果没有匹配到,则输出为空。

字符串前缀
机器学习与数据科学-专题1 Python正则表达式-【正则表达式入门-1】,机器学习与数据科学实战学习,机器学习,python,正则表达式

任务要求

本关任务:学会导入 python 的正则表达式库,使用该库方法的 search 方法编写一个匹配小程序。该方法能查看某个学生名字是否在此学生信息中。

根据提示,具体任务如下:

  1. 导入相关包;

  2. 查看此信息是不是 张明 的信息,查找结果存储在 is_zhangming 变量中。

补充完代码后,点击测评,平台会对你编写的代码进行测试,当你的结果与预期输出一致时,即为通过。

测试输入:张伟 86-14870293148;
预期输出:
None

测试输入:张明;
预期输出:
(0,2)

代码

# coding=utf-8
import re
# 在此导入python正则库

check_name = input()
# 在此使用正则匹配'张明'的信息,结果存储到is_zhangming中
########## Begin ##########
is_zhangming=re.search(r"张明",check_name)
########## End ##########

if is_zhangming is not None:
    print(is_zhangming.span())
else:
    print(is_zhangming)

第二关

相关知识

为了完成本关任务,你需要掌握:

获得多个匹配信息;
字符组。
在上一个任务中,已经了解了只包含简单字母数字的正则表达式,但如果仅仅如此,那么太小瞧正则表达式的威力了。正则表达式强大的地方在于能够指定用于匹配的文本模式。本关来学习正则表达式的字符组匹配。

获得多个匹配信息
在很多常见的场景中需要进行多个匹配,比如在学生名单中过滤出所有的张姓学生的个数。

如果有这种需求咱们可以使用 re 模块中的 findall 或者 finditer方法。两个方法的区别在于 findall 返回的是一个列表,finditer 返回的是一个生成器。

l = re.findall(r'张','张三 张三丰 张无忌 张小凡')
print(l)
['张', '张', '张', '张']
在这个例子中,我们会发现 findall 返回了 4 个“张”,这是因为“张”字在后面的字符串中出现了 4 次。即 findall 返回了所有的匹配信息。

字符组
字符组允许匹配一组可能出现的字符,在正则表达式中用[]表示字符组标志,举个例子。

'I like Python3 and I like python2.7 '
在这句话中,既有大写的 Python,又有全部是小写的 python 。如果我要求都匹配出来,这时候该怎么操作了?这就是正则匹配中字符组的威力了。下面看下示例。

a = re.findall(r'[Pp]ython','I like Python3 and I like python2.7 ')
print(a)
['Python', 'python']
可以发现 [Pp] 既可以匹配大写的 P 也可以匹配小写的 p ,这里值的我们注意的是 [Pp] 仅匹配一个字符,他表示匹配在这个[]内的某一个。

任务要求

本关任务:运用正则表达式的字符组表示方法,编写一个能从文本中快速匹配到 python 和 Python 的小程序。
编程要求
根据提示,在右侧编辑器 Begin-End 部分补充代码,具体任务如下:

从文本中快速匹配到 python 和 Python 的小程序,输出匹配到的所有内容。
测试说明
补充完代码后,点击测评,平台会对你编写的代码进行测试,当你的结果与预期输出一致时,即为通过。

测试输入:I LIKE Python3 and i like python2.7;
预期输出:
[Python, python]

代码

# coding=utf-8

import re

input_str = input()

# 编写获取python和Python的正则,并存储到match_python变量中

########## Begin ##########
match_python=re.findall(r"[Pp]ython",input_str)

########## End ##########

print(match_python)


第三关

相关知识

为了完成本关任务,你需要掌握:

区间;
区间取反。
本关来学习正则表达式区间与区间取反的相关知识。

区间
有一些常见的字符组非常大,比如,我们要匹配的是任意数字,如果依照上述代码,每次我们都需要使用 [0123456789] 这种方式明显很不明智,而如果要匹配从 a-z 的字母,我们也这样编写代码的话,肯定会让我们崩溃。

为了适应这一点,正则表达式引擎在字符组中使用连字符(-)代表区间,所以我们匹配任意数字可以使用 [0-9],所以如果我们想要匹配所有小写字母,可以写成 [a-z],想要匹配所有大写字母可以写成 [A-Z]。

可能我们还有个需求:匹配连字符。因为-会被正则表达式引擎理解为代表连接区间,所以这个时候我们需要对-进行转义。

示例:


a = re.findall(r'[0-9]','xxx007abc')
b = re.findall(r'[a-z]','abc001ABC')
c = re.findall(r'[A-Za-z0-9]','abc007ABC')
d = re.findall(r'[0-9\-]','0edu 007-edu')
print(a)
print(b)
print(c)
print(d)
执行结果如下:

['0', '0', '7']
['a', 'b', 'c']
['a', 'b', 'c', '0', '0', '7', 'A', 'B', 'C']
['0', '0', '0', '7', '-']

区间取反
到目前为止,我们定义的字符组都是由可能出现的字符定义,不过有时候我们可能希望根据不会出现的字符定义字符组,例如:匹配不包含数字的字符组。


a = re.findall(r'[^0-9]','xxx007abc')
b = re.search(r'[^0-9]','xxx007abc')
print(a)
print(b)
执行结果如下:

['x', 'x', 'x', 'a', 'b', 'c']
<re.Match object; span=(0, 1), match='x'>

可以通过在字符数组开头使用 ^ 字符实现取反操作,从而可以反转一个字符组(意味着会匹配任何指定字符之外的所有字符)。

接下来再看一个表达式:n[^e] 这意味着字符 n 接下来的字符是除了 e 之外所有的字符。


a = re.findall(r'n[^e]','final')
b = re.search(r'n[^e]','final')
c = re.findall('r[n[^e]]','Python')
print(a)
print(b)
print(c)
执行结果如下:

['na']
<re.Match object; span=(2, 4), match='na'>
[]

这里我们可以发现 a 和 b 匹配的是 na,字符 a 因为不是 e 所以可以被匹配,而变量 c 的值为空,在这里正则表达式引擎只匹配到了字符串 n 的位置,而 n 之后没有任何可以匹配 [^e] 的字符了,所以这里也匹配失败。

注意

search是找到第一个匹配的地方,而findall是所有匹配的地方

任务描述

本关任务:运用正则表达式的区间表示方法,编写一个能从文本中快速匹配到数字与不是数字字符的小程序。

编程要求
请仔细阅读右侧代码,根据提示,在右侧编辑器 Begin-End 部分补充代码,具体任务如下:

匹配数字字符信息;

匹配不是数字字符的信息。

测试说明
补充完代码后,点击测评,平台会对你编写的代码进行测试,当你的结果与预期输出一致时,即为通过。

测试输入:Python3 and python2.7;
预期输出:
[‘3’, ‘2’, ‘7’]
[‘P’, ‘y’, ‘t’, ‘h’, ‘o’, ‘n’, ’ ', ‘a’, ‘n’, ‘d’, ’ ', ‘p’, ‘y’, ‘t’, ‘h’, ‘o’, ‘n’, ‘.’]文章来源地址https://www.toymoban.com/news/detail-813997.html

代码

# coding=utf-8

import re

input_str = input()

# 1、编写获取到数字的正则,并输出匹配到的信息
########## Begin #re#########
a=re.findall(r"[0-9]",input_str)
########## End ##########
print(a)
# 2、编写获取到不是数字的正则,并输出匹配到的信息
########## Begin ##########
b=re.findall(r"[^0-9]",input_str)
########## End ##########
print(b)



到了这里,关于机器学习与数据科学-专题1 Python正则表达式-【正则表达式入门-1】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Python学习】Python学习21- 正则表达式(1)

    目录 文章所属专区 Python学习 本章节主要说明Python的正则表达式。 正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配。 re.match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match() 就返回 none。 语法: 参数

    2024年01月22日
    浏览(52)
  • python爬虫之正则表达式学习

    网络安全离不开脚本和工具的开发,python很多又需要正则表达式。 这是一个很好的学习正则表达式的项目 正则表达式其实就是在执行搜索时的格式,它由一些字母和数字组合而成。 例如:一个正则表达式  the ,它表示一个规则:由字母 t 开始,接着是 h ,再接着是 e, 正则

    2024年02月09日
    浏览(71)
  • Python 正则表达式RE知识学习

    正则表达式(Regular Expression)是一种强大的文本模式匹配工具,常用于在字符串中查找、替换、分割等操作。在 Python 中,可以使用内置的 re 模块来操作正则表达式。 字符匹配: 普通字符:正则表达式中的普通字符(如字母、数字、特殊字符)与字符串中的对应字符进行匹

    2024年02月09日
    浏览(57)
  • 从零学习python - 14正则表达式的始末

    熟悉正则表达式 正则表达式的基本操作 正则表达式的分组

    2023年04月21日
    浏览(47)
  • Python学习笔记_基础篇(八)_正则表达式

    1.1. 简单介绍 正则表达式并不是Python的一部分。正则表达式是用于处理字符串的强大工具,拥有自己独特的语法以及一个独立的处理引擎,效率上可能不如str自带的方法,但功能十分强大。得益于这一点,在提供了正则表达式的语言里,正则表达式的语法都是一样的,区别只

    2024年02月12日
    浏览(56)
  • 【从零学习python 】65. Python正则表达式修饰符及其应用详解

    修饰符 描述 re.I 使匹配对大小写不敏感 re.M 多行匹配,影响 ^ 和 $ re.S 使 . 匹配包括换行在内的所有字符 示例代码如下: 以上是关于正则表达式修饰符的介绍和示例。修饰符可以根据需要来调整正则表达式的匹配方式,从而更加灵活地处理字符串匹配问题。使用合适的修饰

    2024年02月11日
    浏览(52)
  • python 自动化数据提取之正则表达式

     前    言 我们在做接口自动化的时候,处理接口依赖的相关数据时,通常会使用正则表达式来进行提取相关的数据,今天在这边和大家聊聊如何在python中使用正则表达式。 正则表达式 ,又称正规表示式、正规表示法、正规表达式、规则表达式、常规表示法(英语:Regular

    2024年02月14日
    浏览(54)
  • 如何使用Python和正则表达式处理XML表单数据

    在日常的Web开发中,处理表单数据是一个常见的任务。而XML是一种常用的数据格式,用于在不同的系统之间传递和存储数据。本文通过阐述一个技术问题并给出解答的方式,介绍如何使用Python和正则表达式处理XML表单数据。我们将探讨整体设计、编写思路和一个完整的案例,

    2024年02月10日
    浏览(67)
  • 《零基础入门学习Python》第060讲:论一只爬虫的自我修养8:正则表达式4

    有了前面几节课的准备,我们这一次终于可以真刀真枪的干一场大的了,但是呢,在进行实战之前,我们还要讲讲正则表达式的实用方法和扩展语法,然后再来实战,大家多把持一会啊。 我们先来翻一下文档: 首先,我们要举的例子是讲得最多的 search() 方法,search() 方法

    2024年02月15日
    浏览(57)
  • Python学习笔记:正则表达式、逻辑运算符、lamda、二叉树遍历规则、类的判断

    序号 实例 说明 1 . 匹配任何字符(除换行符以外) 2 d 等效于[0-9],匹配数字 3 D 等效于[^0-9],匹配非数字 4 s 等效于[trnf],匹配空格字符 5 S 等效于[^trnf],匹配非空格字符 6 w 等效于[A-Za-z0-9],匹配单字字符 7 W 等效于[^A-Za-z0-9],匹配非单字字符 8 [ab]cdef 匹配acdef或bcd

    2024年02月11日
    浏览(64)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包