我有以下字符串:
a simple string that may contain this & that but I want it to skip &&. Do you follow?
我正在使用以下正则表达式尝试将其拆分为"&&":
[^&]*\s
这会选择单曲"&"发生。
我也尝试过:
[^&]{2}*\s
但那并没有发现任何东西。
我在网上找到的东西适用于PCRE正则表达式,我无法找到可以使用的RE2类型的解决方案。
答案 0 :(得分:5)
通常情况下,您可以使用(?:(?!&&|(?<=&)&).)+
,但是从golang doesn't currently support lookaheads or lookbehinds开始,您必须使用正则表达式来解决这个问题。显然,使用字符串函数可能适用于您的情况,但正如您在下面的评论中提到的那样,这是一个更大的正则表达式的一部分,所以这里是:
(?:(?:^|[^&])&(?:[^&]|$)|[^&])+
(?:(?:^|[^&])&(?:[^&]|$)|[^&])+
匹配以下任意一次或多次
(?:^|[^&])&(?:[^&]|$)
(?:^|[^&])
断言该行的开头或匹配任何非&
&
按字面意思匹配(?:^|[^&])
断言该行末尾的位置或匹配任何非&
的字符[^&]
匹配任何非&