0

晚上好大家。

我的弦:

4x^2+1.5-x
4x^2-x+1.5
1.5+4x^2-x

我想捕获这些方程的一部分,后面没有“x”或前面没有 +/- 的其他符号(1.5)。我试过这个正则表达式:

[^\^](\d+(\.\d+)?)(?!x)

它匹配搜索到的部分,但有一个问题:匹配包含前导 +/-。我以为我可以通过后视来解决这个问题,但是由于我使用带有 ECMAScript 的 C++11 库,因此不支持此操作。

有人知道如何解决这个问题吗?

谢谢 :)

4

1 回答 1

0

根据更多评论重写。

好的,根据您评论中提供的其他标准和说明:

  • 提取后面没有“x^n”的数字。
  • 它们可以出现在任何地方,开头,中间或结尾
  • 他们可以(!)在他们面前有一个'+'/'-'。如果是“+”,则不应该被捕获,但应该是“-”。(澄清:需要同时捕获,只需要显示-
  • 在这些数字之后,也可以有一个“+”或“-”(很少见,但需要注意)。
  • 重申:不能使用负面的lookbehinds)

(?:[-+]|^)[0-9.]+(?=[-+]|$)

这将匹配以下内容(这里没有格式化和突出显示的好方法,所以我将匹配项包装在 中[]):

4x^2[+8.15]-x
4x^2-x[+1.25]
[1.9]+4x^2-x
[3]+2x^4-x
x[-6]
[.7]+3x
[-.75]+3x
4x[-0.5]
4x[+0.8]
77x
9.8x
-2.52x^3-4x^2[+1.45]
4x^2[+8.15][-1.5]

你需要去掉前导+

Array
(
    [0] => Array
        (
            [0] => +8.15
            [1] => +1.25
            [2] => 1.9
            [3] => 3
            [4] => -6
            [5] => .7
            [6] => -.75
            [7] => -0.5
            [8] => +0.8
            [9] => +1.45
            [10] => +8.15
            [11] => -1.5
        )
)
于 2013-11-01T14:05:43.320 回答