Dart - 通过 RegEx 拆分字符串

Dart - Split String by RegEx

我正在尝试像这样拆分字符串:

x^-5 - 3

进入这样的列表:

[x^-5, -, 3]

^ 之后的第一个减号必须与 x 在同一列表索引处,因为它只是负指数。但是,我希望其他不是任何指数的缺点在它们自己的索引中。

当按 - 拆分时,显然我的 x^-5 也被拆分为两个。

那么有什么方法可以使用 RegEx 或类似的东西来实现吗?

提前致谢

如果您使用 allMatches 而不是 split,您可以使用这样的模式:

(?:\^\s*-|[^\-])+|-

Working example: DartPad

  • 我们匹配除 -^-.
  • 之外的任何内容的标记
  • 如果我们到达 - 不是指数,我们单独匹配它,类似于拆分。

一些注意事项:

  • 有类似的模式,这可能不是最高效的,但很短。
  • 如果您匹配数学表达式,有很多地方可能出错(例如括号),正则表达式不是实现此目的的好方法。
  • 这基本上就是 match to skip 技巧。