Добрый вечер всем.
Мои строки:
4x^2+1.5-x
4x^2-x+1.5
1.5+4x^2-x
Я хочу захватить часть этих уравнений без знака «х» или знака «+/-» перед ним (1.5). Я попробовал это регулярное выражение:
[^\^](\d+(\.\d+)?)(?!x)
Это соответствует искомым частям, но с проблемой: совпадение содержит начальные +/-. Я думал, что смогу решить эту проблему, но поскольку я работаю с библиотекой C ++ 11 с ECMAScript, это не поддерживается.
Кто-нибудь знает, как это решить?
Спасибо 🙂
переписано на основе еще большего количества комментариев.
Хорошо, основываясь на дополнительных критериях и пояснениях, приведенных в ваших комментариях:
-
)(?:[-+]|^)[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
)
)
Других решений пока нет …