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

如何匹配除"&&"外的任意字符?Go语言RE2正则方案求助

在Go里用RE2正则按连续"&&"分割字符串的正确姿势

嘿,我来帮你搞定这个问题!你遇到的坑其实是RE2和PCRE正则特性的差异——毕竟Go的regexp包完全基于RE2,不支持PCRE里的一些高级语法(比如可变长度的lookbehind)。下面给你两种实用的解决方案,适配不同的需求:

方案1:精准按"&&"分割(单个&保留)

如果你的需求是只在恰好两个连续&的位置分割(比如"&&&"会被拆出一个空字符串),直接用&&作为正则表达式就够了,简单高效:

package main

import (
	"fmt"
	"regexp"
)

func main() {
	targetStr := "测试&&字符串&保留单个&&&分割"
	splitter := regexp.MustCompile(`&&`)
	result := splitter.Split(targetStr, -1)
	fmt.Println(result)
	// 输出: [测试 字符串&保留单个 &分割]
}

方案2:把任意多个连续&(≥2)当成一个分隔符

如果不想出现空字符串(比如把"&&&"也当成一个分隔符),就用&{2,}这个正则,它会匹配两个及以上的连续&:

package main

import (
	"fmt"
	"regexp"
)

func main() {
	targetStr := "测试&&字符串&保留单个&&&分割"
	splitter := regexp.MustCompile(`&{2,}`)
	result := splitter.Split(targetStr, -1)
	fmt.Println(result)
	// 输出: [测试 字符串&保留单个 分割]
}

为啥之前的尝试会踩坑?

你说之前的正则要么匹配单个&,要么匹配不到,大概率是这两种情况:

  • 直接用了&作为分隔符,自然会把所有单个&都拆分;
  • 照搬了PCRE的写法(比如用了可变长度的lookbehind),但RE2不支持这类语法,导致正则失效。

上面的两种方案都是纯RE2兼容的,完全适配Go的正则包,放心用就行~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 09:20:43