当前位置:编程学堂 > 01.正则表达式学习(Python必备知识)

01.正则表达式学习(Python必备知识)

  • 发布:2023-10-10 21:58

Python正则表达式

最近开始花时间系统学习正则表达式的知识。借此机会记录一下学习过程中的内容,希望对其他想了解相关内容的朋友有所帮助。正则表达式本身是独立于编程语言的知识,但又依赖于编程语言。基本上,我们使用的编程语言提供了它们的实现。当然,每个公司的实现方式也存在一些差异。有的支持的功能较多,有的支持的功能较少。由于我目前的工作是使用Python,所以下面的内容将使用Python代码来实现。因为正则表达式是实践中广泛使用的工具,所以我认为没有语言来学习它们是不可靠的。即使您不懂 Python 也没关系。我有计划将这个系列扩展到我熟悉的其他语言,但这条路必须一步一步走。我们先把Python的内容说完。

学习资料参考:
《正则表达式必知必会》
Python3正则表达式新手教程
Python正则表达式官方文档

简介:
这是第一本书。我个人强烈推荐它。这个系列的书都非常好。我建议学习时买一本作为枕边书。第二个新手教程是学习API的基本使用。第三个是Python官方文档中的正则表达式模块(提供了国际翻译,直接看英文就好了,比较原汁原味!)。

正则表达式函数介绍

正则表达式主要API关系图

rere.matchre。搜索re.subre.compilere.findallre.finditerre.split匹配搜索subfindall finditer分割

这张图是我个人的总结。我想我已经基本理清了函数之间的关系了。它们的功能是:

  • match 从文本开头开始匹配正则表达式,并返回匹配对象。如果没有,则返回 None
  • search 匹配整个文本中的正则表达式,并返回第一个匹配的对象。如果不是,则返回 None。
  • sub 使用正则表达式进行文本替换(正则表达式的功能:搜索和替换)
  • findall 从整个文本中匹配正则表达式,并以列表的形式返回所有匹配结果。
  • finditer 匹配整个文本中的正则表达式,以迭代器的形式返回所有匹配结果。
  • split 使用正则表达式分割文本

这里可以看到·re·下面紧接着有很多可以使用的函数,然后re.compile下面也有很多同名的函数。 ·re·模块正下方是官方的功能,使用起来很方便。最正统的使用方式是通过re.compile所以,接下来的内容我基本上都是用re.compile以及下面的方法来实现。

重新编译功能

compile函数用于编译正则表达式,生成正则表达式(Pattern)对象,用于match()search()等函数。

语法:

re.compile(模式[,标志])

参数:

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

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

    • re.我忽略大小写

    • re.L 多线模式

    • re.S 是 '.' 以及任何包含换行符的字符('.' 不包括换行符)

    • re.U 代表特殊字符集 \w、\W、\b、\B、\d、\D、\s、\S,依赖于 Unicode 字符属性数据库

    • re.X 为了提高可读性,请忽略“#”后面的空格和注释

示例:查找字符串中的所有数字

导入资源='runoob 123谷歌456'
结果1 = re.findall(r'\d+',  s)图案= 重新.编译(r'\d+')# 查找数字
结果2 =图案.findall(s)
结果3 =图案.findall(s,0,20)打印 (结果1)
打印(结果2)
打印(结果3)"""
输出:
[‘123’,‘456’]
[‘123’,‘456’]
[‘123’,‘45’]
”“”

学习模板

接下来我们将逐步学习正则表达式的内容,非常有趣!有趣又兴奋!

这是一个将一直使用的示例模板。这个模板是本篇博客中最重要的东西,后续的内容都会基于它来扩展。所以,请大家好好理解。

导入 re#需要搜索或匹配的文本
text = """我昨天和今天都爱你。"""#正则表达式regexp = r'love'#编译(编译正则表达式得到Pattern对象)
模式=重新.编译regexp #搜索
m =图案.搜索文字if m:打印("匹配:", m )打印( " 匹配字符串: ", m.()) print("匹配起始位置:" ,.开始())打印("比赛结束位置:" ,  m.结束())打印() "元组匹配位置:" , m.跨度())
else:打印("不匹配!")#替换
new_text =图案.sub("讨厌", 文字)
打印(new_text)

注意:正则表达式regexp在开始之前将使用r前缀。这样做的目的是为了避免在正则表达式中使用大量的转义字符,破坏整体的可读性。性别。

Python的正则表达式包含了很多非常好用的方法,这里就不过多介绍了。我们会一直使用上面的模式,因为那些简单易用的方法只是它的一种封装,学会使用这个基本方法自然会引出其他的方法。

匹配对象可以获得正则表达式的信息。它最重要的方法和属性是:

方法/属性 用途
group() 返回正则匹配字符串
start() 返回匹配的起始位置
结束()返回匹配
span() 的结束位置返回包含匹配(开始、结束)位置
的元组

相关文章