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

如何使用Python regex匹配符合指定规则的上标文本

匹配上标文本的Python正则实现方案

首先需要明确你处理的上标文本的存储形式,不同场景的实现逻辑完全不同:

场景1:带格式标记的富文本(HTML/Markdown)

这是最常见的场景,上标有明确的包裹标记,正则可以通过匹配标记锁定上标范围,再筛选内容规则:

  • HTML 中上标用 <sup> 标签包裹,匹配符合规则的上标内容的正则为:r'<sup>([a-zA-Z0-9,\[\]]+)</sup>'
  • Markdown (通用方言)中上标用 ^ 包裹,匹配正则为:r'\^([a-zA-Z0-9,\[\]]+)\^'

Python 实现示例(HTML场景):

import re

content = "普通文本<sup>abc123[</sup>,不符合规则的上标<sup>!@#$</sup>,普通的abc123[不会命中"
pattern = re.compile(r'<sup>([a-zA-Z0-9,\[\]]+)</sup>')
result = pattern.findall(content)
print(result) # 输出 ['abc123[']

注意:正则中方括号是特殊字符,匹配字面量方括号时必须加转义符\,写为\[\]

场景2:纯文本中的Unicode原生上标字符

如果你的文本是无格式标记的纯文本,上标是用¹、²、ⁿ这类Unicode上标字符表示的,需要注意:Unicode本身没有覆盖全量a-z字母的上标编码,仅支持部分数字和少量字母。
匹配现有Unicode上标且符合你要求的字符规则的正则示例:

import re

content = "普通文本abc123,上标文本ⁿ¹²³[,不符合的上标⁺⁻"
# 正则包含所有已有的Unicode上标数字、字母,以及你要求的逗号、方括号
pattern = re.compile(r'[\u2070\u00B9\u00B2\u00B3\u2074-\u2079\u2071\u207F\u1D43-\u1D61\u1D7C-\u1D9A,\[\]]+')
result = pattern.findall(content)
print(result) # 输出 ['ⁿ¹²³[']

特殊场景说明

如果你处理的是Word、PDF等文档里的格式上标,正则无法直接识别文档的格式属性,需要先借助python-docx、pdfplumber等工具读取到上标的格式标记后,再做内容规则匹配。

内容的提问来源于stack exchange,提问作者Tiago Bachiega de Almeida

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 19:45:03