当前位置:首页 > 技术分析 > 正文内容

【python】一文学会使用正则表达式

1. 基本模式匹配

要在字符串中找到一个与模式匹配的匹配项:

import re
text = "Search this string for patterns."
match = re.search(r"patterns", text)
if match:
    print("Pattern found!")

编译正则表达式

编译一个用于重复使用的正则表达式:

pattern = re.compile(r"patterns")
match = pattern.search(text)

3. 在开头或结尾匹配

检查字符串是否以模式开头或结尾:

if re.match(r"^Search", text):
    print("Starts with 'Search'")
if re.search(r"patterns.#34;, text):
    print("Ends with 'patterns.'")

4. 查找所有匹配项

要查找字符串中所有模式出现的位置:

all_matches = re.findall(r"t\w+", text)  # Finds words starting with 't'
print(all_matches)

5. 搜索和替换(替换)

要在字符串中替换模式出现:

replaced_text = re.sub(r"string", "sentence", text)
print(replaced_text)

6. 分割字符串

将字符串按模式出现分割:

words = re.split(r"\s+", text)  # Split on one or more spaces
print(words)

7. 转义特殊字符

匹配特殊字符时,请将其转义:

escaped = re.search(r"\bfor\b", text)  # \b is a word boundary

8. 分组与捕获

将模式的部分分组并提取它们的值:

match = re.search(r"(\w+) (\w+)", text)
if match:
    print(match.group())  # The whole match
    print(match.group(1)) # The first group

9. 非捕获组

定义不捕获的组:

match = re.search(r"(?:\w+) (\w+)", text)
if match:
    print(match.group(1))  # The first (and only) group

10. 预查和回溯断言

匹配基于其前后内容而不包括其本身的模式:

lookahead = re.search(r"\b\w+(?= string)", text)  # Word before ' string'
lookbehind = re.search(r"(?<=Search )\w+", text)  # Word after 'Search '
if lookahead:
    print(lookahead.group())
if lookbehind:
    print(lookbehind.group())

11. 修改模式匹配行为的标志

要使用类似 re.IGNORECASE 的标志来更改模式匹配方式:

case_insensitive = re.findall(r"search", text, re.IGNORECASE)
print(case_insensitive)

12. 使用命名组

将名称分配给组并通过名称引用它们:

match = re.search(r"(?P<first>\w+) (?P<second>\w+)", text)
if match:
    print(match.group('first'))
    print(match.group('second'))

13. 多行匹配

要使用re.MULTILINE标志匹配多行模式:

multi_line_text = "Start\nmiddle end"
matches = re.findall(r"^m\w+", multi_line_text, re.MULTILINE)
print(matches)

14. 懒惰量词

尽可能少地匹配字符,使用懒惰量词(*?+???):

html = "<body><h1>Title</h1></body>"
match = re.search(r"<.*?>", html)
if match:
    print(match.group())  # Matches '<body>'

15. 长篇正则表达式

使用re.VERBOSE以获得更易读的正则表达式:

pattern = re.compile(r"""
    \b      # Word boundary
    \w+     # One or more word characters
    \s      # Space
    """, re.VERBOSE)
match = pattern.search(text)

扫描二维码推送至手机访问。

版权声明:本文由ruisui88发布,如需转载请注明出处。

本文链接:http://www.ruisui88.com/post/4587.html

标签: 正则 ?=
分享给朋友:

“【python】一文学会使用正则表达式” 的相关文章

基于Ubuntu的Linux Lite 6.0发行版正式发布

开发者 Jerry Bezencon 今天宣布,基于 Ubuntu 的 Linux Lite 6.0 发行版正式发布。本次更新代号为“Fluorite”,基于 Ubuntu 22.04 LTS (Jammy Jellyfish) 系统,它由长期支持的 Linux 5.15 LTS 内核系列驱动。下载...

发行版Vanilla OS 2发布稳定版:彻底重写、改变使用Linux的方式

Vanilla OS 是去年崭露头角的 Linux 发行版,最初的 1.0 版本基于 Ubuntu 构建 —— 亮点之一是系统核心“不可变”。后来改用 Debian 测试分支 (Debian Sid),免费且开源,默认桌面环境是 GNOME。什么是不可变 Linux 发行版?不可变发行版确保操作系统...

Windows 下 Git 拉 Gitlab 代码

读者提问:『阿常你好,Windows 下 Git 拉 Gitlab 代码的操作步骤可以分享一下吗?』阿常回答:好的,总共分为五个步骤。一、Windows 下安装 Git官网下载链接:https://git-scm.com/download/winStandalone Installer(安装版)注意...

内存问题探微

这篇文章是我在公司 TechDay 上分享的内容的文字实录版,本来不想写这么一篇冗长的文章,因为有不少的同学问是否能写一篇相关的文字版,本来没有的也就有了。说起来这是我第二次在 TechDay 上做的分享,四年前第一届 TechDay 不知天高地厚,上去讲了一个《MySQL 最佳实践》,现在想起来那...

你感动了吗?佳能超规格镜头 RF 24-105mm F2.8深度测评

如果要你选一支用作多题材创作的挂机镜头,那我相信很多人会选择24-105mm这个焦段的镜头。作为一支可以实现从广角到长焦的变焦镜头,24-105mm有着丰富的焦段选择。只是基于镜头体积以及光学结构上的限制,此前的24-105mm镜头只能恒定在F4的光圈。而佳能打破了这一限制,将实用焦段和恒定光圈完美...

多项修正 尼康D4s发布最新1.10版固件

尼康公司与2014年8月27日发布了D4s的最新固件,固件版本号为C:1.10。这次固件升级,主要解决了一些BUG,并且对拍摄菜单与相机操作做了一定调整。下面是本次新固件的具体信息:尼康发布D4s最新C固件 1.10版对C固件升级到1.10版所作的修改:当选定运动VR模式并换上 AF-S 尼克尔 4...