RegEx: захват строки без начального символа

Добрый вечер всем.

Мои строки:

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

Я хочу захватить часть этих уравнений без знака «х» или знака «+/-» перед ним (1.5). Я попробовал это регулярное выражение:

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

Это соответствует искомым частям, но с проблемой: совпадение содержит начальные +/-. Я думал, что смогу решить эту проблему, но поскольку я работаю с библиотекой C ++ 11 с ECMAScript, это не поддерживается.

Кто-нибудь знает, как это решить?

Спасибо 🙂

0

Решение

переписано на основе еще большего количества комментариев.

Хорошо, основываясь на дополнительных критериях и пояснениях, приведенных в ваших комментариях:

  • извлекать числа без ‘x ^ n’ позади них.
  • они могут появляться везде, в начале, в середине или в конце
  • они могут (!) иметь «+» / «-» перед ними. если это «+», это должно быть не зафиксировано, а «-». (выяснены: нужно захватить оба, только ШОУ -)
  • после этих чисел тоже может быть знак «+» или «-» (редкий случай, но его нужно заметить).
  • (подтвердил: не могу использовать негативные взгляды)

(?:[-+]|^)[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
)
)
0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector