python:正则表达式

范例一:

复制代码
import re

content = 'Hello 1234567 World_This is a Regex Demo'
result=re.match('^Hello\s(\d+)\sWorld',content)
print(result)
print(result.group())
print(result.group(1))
print(result.span())

关键知识点:

  1. re.match(pattern, string) :从字符串开头 开始匹配正则表达式,若开头不匹配则返回 None,匹配成功则返回 Match 对象。
  2. 正则表达式符号
    • ^:匹配字符串开头(re.match 本身已从开头匹配,此处可省略,但写出来更明确)。
    • \s:匹配任意空白字符(空格、制表符等)。
    • \d+:匹配 1 个或多个数字。
    • ():分组匹配,将括号内的内容作为一个分组,可通过 group(n) 提取。
  3. Match 对象的方法
    • group():返回整个匹配的字符串(等同于 group(0))。
    • group(1):返回第一个分组匹配的内容(若有多个分组,可依次用 group(2)group(3) 提取)。
    • span():返回匹配的起始和结束索引(元组形式)。

范例二:

复制代码
import re

content = 'Hello 1234567 World_This is a Regex Demo'
result=re.match('^Hello.*Demo$',content)
print(result)
print(result.group())
print(result.span())

关键知识点:

1. 正则表达式模式

^Hello.*Demo$ 的含义:

  • ^:匹配字符串的开头
  • Hello:匹配字面量字符串 "Hello"
  • .** 表示匹配前面的字符(. 代表任意字符,除换行符)0 次或多次
  • Demo$$ 匹配字符串的结尾,这里匹配字面量 "Demo"

范例三:

复制代码
import re

s = "Python is good, Python is powerful"
# 正则:匹配以Python开头,以is结尾的内容(非贪婪匹配)
pattern_lazy = r"Python.*?is"
result_lazy = re.search(pattern_lazy, s)
print("非贪婪匹配结果:", result_lazy.group())

print("非贪婪匹配结果:", result_lazy)
复制代码
import re

s = "Python insert is good, Python is powerful"
# 正则:匹配以Python开头,以is结尾的内容(非贪婪匹配)
pattern_lazy = r"Python.*?is"
result_lazy = re.search(pattern_lazy, s)
print("非贪婪匹配结果:", result_lazy.group())

print("非贪婪匹配结果:", result_lazy)

在python 和is 之间增加了insert,结果如下:

复制代码
import re

s = "Python insert is good, Python is powerful"
# 正则:匹配以Python开头,以is结尾的内容(非贪婪匹配)
pattern_lazy = r"Python.*is"
result_lazy = re.search(pattern_lazy, s)
print("非贪婪匹配结果:", result_lazy.group())

print("非贪婪匹配结果:", result_lazy)

将.*?更改为.*之后,运行结果如下:

.*正则表达式将所有可能的符合正则要求的范围全部包含了进来 !

相关推荐
默_笙2 分钟前
😭 我花了两小时找了一个数据结构 bug,才把"迷你 Cursor"跑起来,绝望(bushi)
前端·javascript
竹林81818 分钟前
wagmi v2 监听合约事件踩坑记:从 `useContractEvent` 到 `watchContractEvent`,我重构了三版才搞定实时数据流
前端·javascript
kisloy24 分钟前
【python零基础教程第24讲】代码规范与质量管控
开发语言·python
天若有情6731 小时前
纯HTML+Tailwind单页作品集网站——零框架静态前端完整源码
前端·html
WebGirl1 小时前
H5唤起app前端实现方案
前端
xywww1681 小时前
AWS 账号权限怎么分:根用户和 IAM 用户区别及日常使用建议
大数据·开发语言·人工智能·python·gpt·云计算·aws
heimeiyingwang1 小时前
【架构实战】SQL注入与XSS防御:常见Web漏洞的系统性修复
前端·sql·架构
Larcher1 小时前
从零实现一个可运行的 RAG - LangChain、内存向量库与检索增强生成
前端·javascript
饼饼饼2 小时前
React 组件间传参好痛苦?试试这一套"优雅组合拳":Context 与 Refs 实战
前端