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

正则需求:将字符串中&替换为And,支持动态不区分大小写的例外规则

正则表达式替换问题解决方案

问题背景

给定例外列表和字符串列表,需完成带规则的&替换,具体要求如下:

  • 将所有&替换为' and ',但例外列表中的组合除外
  • 例外列表支持动态输入
  • 例外列表不区分大小写
  • 例外组合中间有空格(如r & b、r& b)时,仍需识别为对应例外
  • 仅当例外组合被空格包围时才识别(如sar&bd不视为例外)

输入示例

exception_lst = ['r&b',
                 'm&a']
    
str_lst = ['fe r&b fe',
           'sar&bd',
           'sd r &B b',
           'as r& b ac',
           'sdf O&B sd',
           'df R&B sdc',
           's r&p es',
           'sf m & A df']

期望输出

str_lst = ['fe r&b fe',
           'sar and bd',
           'sd r&b b',
           'as r&b ac',
           'sdf O and B sd',
           'df R&B sdc',
           's r and p es',
           'sf m&a df']

解决方案

分两步处理:先修复符合条件的例外组合格式,再替换非例外的&。

Python 实现代码

import re

def process_strings(exception_lst, str_lst):
    exception_patterns = []
    # 为每个例外项构建匹配规则
    for exc in exception_lst:
        left, right = exc.split('&')
        # 匹配&前后可带任意空格、不区分大小写、且被单词边界包围的组合
        pattern = re.compile(
            fr'\b({left.strip()})\s*&\s*({right.strip()})\b',
            re.IGNORECASE
        )
        exception_patterns.append((pattern, exc))
    
    processed_list = []
    for s in str_lst:
        # 第一步:把例外组合统一为标准格式
        for pattern, target in exception_patterns:
            s = pattern.sub(target, s)
        # 第二步:替换所有剩余的&为' and '
        s = re.sub(r'&', ' and ', s)
        processed_list.append(s)
    return processed_list

# 测试执行
exception_lst = ['r&b', 'm&a']
str_lst = [
    'fe r&b fe',
    'sar&bd',
    'sd r &B b',
    'as r& b ac',
    'sdf O&B sd',
    'df R&B sdc',
    's r&p es',
    'sf m & A df'
]

result = process_strings(exception_lst, str_lst)
print("str_lst = [")
for item in result:
    print(f"           '{item}',")
print("]")

代码说明

  1. 例外规则构建:拆分每个例外项的&前后内容,用\s*匹配任意空格,\b确保组合被空格/单词边界包围,re.IGNORECASE实现大小写不敏感匹配
  2. 格式统一:先将字符串中符合例外规则的组合替换为标准形式(如r & B转为r&b)
  3. 剩余&替换:最后对未被标记为例外的&执行替换操作

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 17:22:35