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

Python正则:Jupyter中行尾指定字符串高亮问题求解

Jupyter Notebook中行尾正则匹配与高亮解决方案

问题根源

正则表达式默认采用单行模式,此时$仅匹配整个字符串的末尾,而非每行的行尾。这就是你用coffee$|pot$|pots$在regex101(默认开启多行模式)能生效,但在Jupyter中无法匹配的核心原因。

解决方法

只需在正则匹配时添加re.MULTILINE标志,让$匹配每行的行尾(换行符前的位置),同时结合Jupyter支持的HTML标签实现高亮:

import re
from IPython.display import HTML

# 目标文本
poem = """
All I want is a proper cup of coffee
Made in a proper copper coffee pot
I may be off my dot
But I want a cup of coffee
From a proper coffee pot
Tin coffee pots and iron coffee pots
They’re no use to me
If I can’t have a proper cup of coffee
In a proper copper coffee pot
I’ll have a cup of tea.
"""

# 匹配行尾目标词的正则(开启多行模式)
pattern = r'coffee$|pot$|pots$'
# 用<mark>标签高亮匹配到的内容
highlighted = re.sub(pattern, r'<mark>\g<0></mark>', poem, flags=re.MULTILINE)

# 在Jupyter中渲染高亮文本
HTML(f'<pre>{highlighted}</pre>')

关键说明

  1. re.MULTILINE:让^匹配每行开头,$匹配每行结尾,不受换行符是\n还是\r\n影响
  2. <mark>标签:Jupyter会解析HTML标签实现高亮;若需其他样式,可替换为<strong>或自定义CSS的span标签
  3. 无需手动处理换行符:不要用.replace("\n", " ")破坏文本结构,开启多行模式即可直接匹配行尾

内容的提问来源于stack exchange,提问作者SM .PRITHIV

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 10:40:31