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

如何使用正则表达式拆分字符串中的商标™符号?

用正则表达式拆分字符串中的商标™符号并添加空格

你可以通过正则替换直接实现两种场景的需求,不需要先单独检测再处理,具体方案如下:

方案1:两步替换(直观易理解)

先处理「商标符号后带数字」的场景,再处理「商标符号后无数字」的场景,代码示例(以Python为例):

import re

def format_trademark(text):
    # 处理场景2:string™2 → string ™ 2
    text = re.sub(r'([a-zA-Z0-9]+)(™)([0-9])', r'\1 \2 \3', text)
    # 处理场景1:string™ → string ™
    text = re.sub(r'([a-zA-Z0-9]+)(™)(?![0-9])', r'\1 \2', text)
    return text

# 测试
print(format_trademark("string™"))   # 输出:string ™
print(format_trademark("string™2"))  # 输出:string ™ 2

正则说明:

  • 第一个正则捕获三个组:字母数字序列、™、单个数字,替换时在三组之间插入空格;
  • 第二个正则用(?![0-9])正向否定预查,确保™后面没有数字,只在字母数字和™之间插入空格。

方案2:单步替换(用回调函数简化)

如果想一步完成,可以利用正则的捕获组和替换回调函数,自动判断是否需要在™和数字之间加空格:

import re

def format_trademark(text):
    return re.sub(
        r'([a-zA-Z0-9]+)(™)([0-9]?)',
        lambda match: f"{match.group(1)} {match.group(2)}{' ' + match.group(3) if match.group(3) else ''}",
        text
    )

# 测试
print(format_trademark("string™"))   # 输出:string ™
print(format_trademark("string™2"))  # 输出:string ™ 2

这个正则捕获了三个组,第三个组是可选的数字,回调函数会判断第三个组是否存在,存在的话就插入空格,不存在则只处理前面的空格。

另外,你之前写的检测正则"[a-zA-Z0-9]+[™]([0-9])?$"可以用来提前过滤需要处理的字符串,避免对无关文本做替换操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 03:10:16