You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:Python正则表达式匹配>与<之间内容的有效方法

解决Python正则提取>和<之间内容的问题

我懂你想要用Python正则表达式提取字符串中位于>和<之间的内容,之前尝试的re.findall('^>.*<$', string)和re.findall('^\>.*\<$', string)没达到预期效果对吧?咱们先来分析问题出在哪,再给出可行的正则方案。

为什么之前的写法不生效?

你的正则里用到了^和$,这两个符号分别匹配字符串的开头和字符串的结尾。也就是说,只有当整个字符串完全符合>内容<这种格式(开头是>,结尾是<)时,才能匹配成功。如果你的字符串前后有其他内容,或者包含多组>...<片段,这种写法就完全匹配不到了。

可行的正则解决方案

方案1:匹配非换行的内容(最常用)

用捕获组匹配>之后、<之前的所有非<字符,写法如下:

import re
string = "示例文本>需要提取的内容1<,还有>需要提取的内容2<"
result = re.findall(r'>([^<]+)<', string)
print(result)  # 输出: ['需要提取的内容1', '需要提取的内容2']
  • >:匹配起始的分隔符
  • ([^<]+):捕获组,[^<]表示匹配除了<之外的任意字符,+表示匹配1次或多次,这样能精准截取到<之前的内容
  • <:匹配结束的分隔符

方案2:匹配包含换行的内容

如果>和<之间的内容可能包含换行符(.默认不匹配换行),可以用[\s\S]匹配所有字符(包括换行),再结合非贪婪匹配:

import re
string = "多行内容>第一行\n第二行<,继续测试>第三行<"
result = re.findall(r'>([\s\S]+?)<', string)
print(result)  # 输出: ['第一行\n第二行', '第三行']
  • [\s\S]:匹配任意空白字符和非空白字符,也就是所有字符
  • +?:非贪婪匹配,避免把多个>...<片段的内容合并成一个结果

补充:如果只匹配单个>...<且字符串就是该格式

如果你确实只需要匹配整个字符串就是>内容<的情况,那可以给正则加上捕获组来提取内容:

import re
string = ">单个内容<"
result = re.findall(r'^>(.*)<$', string)
print(result)  # 输出: ['单个内容']

试试这些方案,应该能满足你的需求啦!

内容的提问来源于stack exchange,提问作者Kyle K

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 07:59:33