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

如何提取BRAND~*与*~之间的文本?正则表达式匹配求助

解决正则匹配问题

你的正则表达式问题出在两个关键点:

  • *是正则元字符,代表匹配前一个元素零次或多次,但你要匹配的是字面的*符号,必须转义为\*
  • 非贪婪模式(.+?)会在遇到第一个符合后续规则的字符时停止匹配,导致只捕获到第一个*

正确实现方式

使用转义后的正则,结合贪婪或非贪婪模式都能得到目标结果:

方法1:使用re.findall

import re

s = "BRAND~*HP*5250*RAM128*GPUAMD7990*~"
# 用raw字符串避免转义冲突,\*匹配字面星号,.*贪婪匹配到最后一个*~前的内容
result = re.findall(r'BRAND~\*(.*)\*~', s)
print(result)  # 输出: ['HP*5250*RAM128*GPUAMD7990']

方法2:使用re.search(更直接获取单个结果)

import re

s = "BRAND~*HP*5250*RAM128*GPUAMD7990*~"
match = re.search(r'BRAND~\*(.*)\*~', s)
if match:
    print(match.group(1))  # 输出: HP*5250*RAM128*GPUAMD7990

规则解释

  • r'BRAND~\*(.*)\*~':
    • BRAND~ 匹配固定前缀
    • \* 匹配字面的*符号
    • (.*) 贪婪匹配所有字符,直到遇到最后一个\*~(贪婪模式会尽可能匹配最长的有效内容)
    • \*~ 匹配固定后缀

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 04:40:26