正则表达式:仅当字符串不含指定子串时替换目标子串
正则条件替换:仅在不含"gross"的字符串中替换"org"
需求明确:将字符串里的org替换为original,但只要字符串包含gross子串,就完全不执行替换操作。
示例
- 符合替换规则的情况:
org_selling -> original_selling - 不执行替换的情况:
org_selling_gross -> org_selling_gross
实现方案
方案1:先判断再替换(兼容性最好,推荐)
逻辑简单直接,几乎所有编程语言和工具都支持:
- 先检查字符串是否包含
gross - 若不包含,将所有
org替换为original;若包含则直接返回原字符串
Python示例:
def replace_org_if_no_gross(s): if 'gross' not in s: return s.replace('org', 'original') return s
JavaScript示例:
function replaceOrgIfNoGross(str) { return str.includes('gross') ? str : str.replace(/org/g, 'original'); }
方案2:纯正则单替换(适合文本编辑器等场景)
如果是在支持正则断言的工具(如VS Code、Sublime Text)中,想用单条正则完成替换,可使用正向否定预查确保整个字符串不含gross:
正则匹配模式(需开启全局匹配):
\borg\b(?!.*gross)
替换目标:original
若需要支持带换行的字符串,将.替换为[\s\S]以匹配所有字符:
\borg\b(?![\s\S]*gross)
说明
- 方案1逻辑清晰,调试和维护更便捷,优先推荐使用
- 方案2适合只能通过单正则完成替换的场景,注意必须开启全局匹配才能替换所有符合条件的
org
内容的提问来源于stack exchange,提问作者Rishi Bajargan
相关产品推荐
相关产品推荐

