我如何匹配任何角色,但"&&"?

时间:2018-02-21 22:49:37

标签: regex go

我有以下字符串:

a simple string that may contain this & that but I want it to skip &&. Do you follow? 

我正在使用以下正则表达式尝试将其拆分为"&&":

[^&]*\s

这会选择单曲"&"发生。

我也尝试过:

[^&]{2}*\s

但那并没有发现任何东西。

我在网上找到的东西适用于PCRE正则表达式,我无法找到可以使用的RE2类型的解决方案。

https://regex101.com/r/kgVVvB/1

1 个答案:

答案 0 :(得分:5)

通常情况下,您可以使用(?:(?!&&|(?<=&)&).)+,但是从golang doesn't currently support lookaheads or lookbehinds开始,您必须使用正则表达式来解决这个问题。显然,使用字符串函数可能适用于您的情况,但正如您在下面的评论中提到的那样,这是一个更大的正则表达式的一部分,所以这里是:

See regex in use here

(?:(?:^|[^&])&(?:[^&]|$)|[^&])+
  • (?:(?:^|[^&])&(?:[^&]|$)|[^&])+匹配以下任意一次或多次
    • (?:^|[^&])&(?:[^&]|$)
      • (?:^|[^&])断言该行的开头或匹配任何非&
      • 的字符
      • &按字面意思匹配
      • (?:^|[^&])断言该行末尾的位置或匹配任何非&的字符
    • [^&]匹配任何非&
    • 的字符
相关问题