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

如何针对同一正则操作根据输入条件使用不同的replace替换函数

解决方案

完全可以实现该需求,以下是两种常用实现方式:

方案1:前置判断+分支替换(全环境兼容)

核心逻辑是先校验输入文本是否以左括号开头,再调用对应规则完成替换:

  1. 判定规则:校验字符串首字符是否为(,对应正则为^\(
  2. 若匹配(段落以括号开头),使用替换模板<br>$1<br>$2<br>
  3. 若不匹配(括号在文本内部),使用替换模板$1<br>$2<br>

JavaScript 示例代码

// 匹配括号及后续内容的正则
const bracketRegex = /(\([^)]+\))([^(<]+)/g;
function processParagraph(text) {
  if (/^\(/.test(text)) {
    return text.replace(bracketRegex, '<br>$1<br>$2<br>');
  }
  return text.replace(bracketRegex, '$1<br>$2<br>');
}

Python 示例代码

import re
bracket_regex = re.compile(r'(\([^)]+\))([^(<]+)')
def process_paragraph(text: str) -> str:
    if text.startswith('('):
        return bracket_regex.sub(r'<br>\1<br>\2<br>', text)
    return bracket_regex.sub(r'\1<br>\2<br>', text)

方案2:单次正则+替换回调(支持回调的环境更简洁)

如果运行环境支持replace方法传入函数回调,可以不用做前置分支判断,直接在回调中识别当前匹配位置:

const bracketRegex = /(\([^)]+\))([^(<]+)/g;
function processParagraph(text) {
  return text.replace(bracketRegex, (match, group1, group2, offset) => {
    // 仅当匹配位置在文本最开头时,额外添加前置<br>
    if (offset === 0) {
      return `<br>${group1}<br>${group2}<br>`;
    }
    return `${group1}<br>${group2}<br>`;
  })
}

效果验证

测试用例1(括号开头):(smiles) Hello Jane, (quietly) How's the game?
输出结果:<br>(smiles)<br> Hello Jane, <br>(quietly)<br> How's the game?<br>

测试用例2(括号在内部):Hello Jane, (quietly) How's the game?
输出结果:Hello Jane, (quietly)<br> How's the game?<br>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 23:36:04