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

如何使用正则提取被*、&等特殊字符包裹的字符串内容

解决方案

你可以使用Python的re模块实现需求,核心是利用非贪婪匹配捕获成对符号中间的内容,方案可通用适配不同输入字符串。

单类型符号单独提取示例

import re

input_str = "hi i am *hadi* and i have &18& year old"
# 提取*成对包裹的内容
name = re.search(r'\*(.*?)\*', input_str).group(1)
# 提取&成对包裹的内容
age = re.search(r'&(.*?)&', input_str).group(1)
print(name, age)

运行输出:

hadi 18

一次性提取所有两类符号包裹的内容

如果需要同时提取所有符合规则的内容,可使用以下写法:

import re

input_str = "hi i am *hadi* and i have &18& year old"
result = re.findall(r'[*&](.*?)[*&]', input_str)
print(result)
# 输出:['hadi', '18']

规则说明

  • 正则中的\*、&用来匹配对应的包裹符号,*属于正则特殊字符需要加反斜杠转义
  • .*?是非贪婪匹配,可避免同个字符串存在多对同符号时出现跨配对匹配的错误
  • 如果需要支持匹配带换行的内容,可以给方法增加re.DOTALL参数,比如re.search(r'\*(.*?)\*', input_str, re.DOTALL)
  • 兼容无匹配场景避免报错,可增加非空判断,示例:
    name_match = re.search(r'\*(.*?)\*', input_str)
    name = name_match.group(1) if name_match else ''
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 07:36:03