什么是 CTRE 中负面回顾(未实施)的替代方案?

What is an alternative to the negative lookbehind (that's not implemented) in CTRE?

我正在尝试匹配字符串中包含单词的部分。 例如:[This]。我想匹配 [This],但只有当它前面的字符不是反斜杠时,例如,不是这个 \[This].

for (auto match: ctre::range<R"((((?<!\))\[[^\]]*\])">(input)) {
   // you can use match.str() here
}

通常我会使用的正则表达式是这样的:

(((?<!\))\[[^\]]*\])

..但是,根据 this 评论和收到的 ctre::problem_at_position<5>,似乎它在今天的 CTRE 中不受支持。

有没有办法在没有实现的情况下做我想做的事情?

正则表达式如下:

(?:^|[^\])(\[[^\]]*\])

其中:

  • (?:^|[^\]) 是一个 non-capturing 组,它使用交替 (|) 在 ^(字符串的开头)或 [^\](不是反斜杠的任何字符)。
  • (\[[^\]]*\]) 捕获所需的模式。