首页 > 解决方案 > RegEx:从匹配中排除模式

问题描述

我知道 RegEx 的一些基础知识,但不是专业人士。我正在学习它。目前,我正在使用以下非常非常简单的正则表达式来匹配给定句子中的任何数字。

/d

现在,我想要的是,除了 e074663 OR e123444 OR e7736 等模式之外的所有数字都应该从匹配中排除。所以对于下面的输入,

编辑398 e 997979表达式9798729889 & T 900980980098 ext 以查看 e081815 匹配项。滚动匹配项或 e081815 表达式 e081815 以获取详细信息。e081815 支持 PCRE 和 JavaScript 风格的 RegEx 支持 e081815。使用测试模式 e081815 验证您的表达式。

应该只匹配粗体数字,而不是任何 e081815。我尝试了以下但没有成功。

(^[e\d])(\d)

此外,展望未来,需要添加更多模式以进行排除。例如 cg636553 或 cg(任何数字)。在这方面的任何帮助将不胜感激。谢谢!

标签: regexsalesforceregex-group

解决方案


另一种选择是使用带有环视的捕获组

(?:\b(?!e|cg)|(?<=\d)\D)[A-Za-z]?(\d+)
  • (?:非捕获组
    • \b(?!e|cg)字边界,断言右边是不是ecg
    • |或者
    • (?<=\d)\D匹配除数字之外的任何字符,断言直接在左边的是数字
  • )关闭组
  • [A-Za-z]?匹配一个可选的字符 a-zA-Z
  • (\d+)捕获组 1中的 1 个或多个数字

正则表达式演示


推荐阅读