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

0

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

Мои строки:

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

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

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

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

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

Спасибо :)

  • 0
    Не могли бы вы просто взглянуть на первый матч, а не на матч в целом? Это будет включать только номер.
  • 0
    Можете ли вы быть более конкретным о том, что вы на самом деле хотите? у нескольких из этих 4-х и у всех этих 2-х также нет знака «+», «+» или «-» за ними .. Вы тоже хотели их сопоставить? Вы просто хотите первый номер в строке?
Показать ещё 2 комментария
Теги:
c++11
ecmascript-5

1 ответ

0
Лучший ответ

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

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

  • извлекайте числа без "x ^ n" позади них.
  • они могут появляться повсюду, в начале, посередине или в конце
  • они могут (!) иметь перед ними "+"/'-'. если это "+", это не должно захватываться, а "-" должно быть. (уточняется: нужно захватить оба, только SHOW -)
  • после этих чисел может быть "+" или "-" тоже (редкий случай, но его нужно заметить).
  • (повторенный: нельзя использовать отрицательные искажения)

(?:[-+]|^)[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
    спасибо, но проблема в том, что я не могу использовать lookbehind (см. выше), так как ECMAScript не поддерживает его.
  • 0
    @TheFunnyTree Ааааааааааааааа ... посмотрите мои изменения
Показать ещё 12 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню