Dart - 通过 RegEx 拆分字符串

OhM*_*Mad 2 regex lex dart

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

x^-5 - 3
Run Code Online (Sandbox Code Playgroud)

变成这样的列表:

[x^-5, -, 3]
Run Code Online (Sandbox Code Playgroud)

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

当被 - 分割时,显然我的 x^-5 也被一分为二。

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

提前致谢

Kob*_*obi 5

如果您使用allMatches代替split,您可以使用这样的模式:

(?:\^\s*-|[^\-])+|-
Run Code Online (Sandbox Code Playgroud)

工作示例:DartPad

  • 我们匹配包含除-, 或之外的任何内容的标记^-
  • 如果我们达到一个-不是指数的,我们就单独匹配它,类似于分裂。

一些注意事项:

  • 有类似的模式,这可能不是最有效的,但它很短。
  • 如果您正在匹配数学表达式,则有很多事情可能会出错(例如括号),正则表达式不是实现这一目标的好方法。
  • 这基本上是匹配跳过技巧。