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)

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

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

相关推荐
乔江seven8 分钟前
【python轻量级Web框架 Flask 】1 Flask 初识
开发语言·后端·python·flask
Bruk.Liu8 分钟前
(LangChain实战3):LangChain阻塞式invoke与流式stream的调用
人工智能·python·langchain
徐同保9 分钟前
vue.config.ts配置代理解决跨域,配置开发环境开启source-map
前端·javascript·vue.js
岱宗夫up16 分钟前
Scrapy框架实战教程(上):从入门到实战,搭建你的第一个专业爬虫
爬虫·python·scrapy
Bruk.Liu16 分钟前
(LangChain实战4):LangChain消息模版PromptTemplate
人工智能·python·langchain
SunnyRivers17 分钟前
Asyncio 提速秘籍:用 run_in_executor 与 to_thread 巧解同步阻塞难题
python·asyncio·to_thread·run_in_executor
亚林瓜子20 分钟前
pyspark分组计数
python·spark·pyspark·分组统计
查无此人byebye24 分钟前
从零解读CLIP核心源码:PyTorch实现版逐行解析
人工智能·pytorch·python·深度学习·机器学习·自然语言处理·音视频
chao_78925 分钟前
双设备全栈开发最佳实践[mac系统]
git·python·macos·docker·vue·全栈
Hexene...27 分钟前
【前端Vue】npm install时根据新的状态重新引入实际用到的包,不引入未使用到的
前端·vue.js·npm