正则匹配需求:指定前缀开头,含::与CASE约束的字符串匹配
正则匹配实现方案
核心正则表达式(以Linus::为指定前缀为例)
^Linus::(?:(?!::).|::CASE)*$|^Linus::.*?(?=::(?!CASE))
规则拆解
^Linus:::固定匹配开头的指定前缀,替换成你需要的起始字符串即可复用- 第一个分支
(?:(?!::).|::CASE)*$:- 负责匹配完全符合要求的整个字符串:要么前缀后没有出现
::,要么所有出现的::都紧跟CASE (?!::).:匹配任意单个字符,前提是该字符不是::的起始位置(避免匹配到孤立的::)|::CASE:允许直接匹配合法的::CASE片段*$:重复匹配直到字符串结尾,确保全程无违规片段
- 负责匹配完全符合要求的整个字符串:要么前缀后没有出现
- 第二个分支
.*?(?=::(?!CASE)):- 负责匹配违规场景下的有效前缀部分:当遇到
::后不是CASE的情况时,停在这个违规::之前,只保留前面的合法内容
- 负责匹配违规场景下的有效前缀部分:当遇到
示例验证
- 输入
Linus::AOPKNS::CASE→ 匹配第一个分支,返回完整字符串 - 输入
Linus::AOPKNS→ 匹配第一个分支,返回完整字符串 - 输入
Linus::AOPKNS::OK→ 匹配第二个分支,返回Linus::AOPKNS
内容的提问来源于stack exchange,提问作者NOT
相关产品推荐
相关产品推荐

