2015-04-11 3 views
0

Я хочу регулярное выражение найти коэффициент, силы и константы в уравнении, которые имеют общую форму ax^3+bx^2+cx+d=0, например:Найти коэффициент по регулярному выражению?

2x^3+4x^2-6x+1=0 

Я попытался @"\^\d+" для властей, и я понятия не имею о том, как найти десятичные числа до й в качестве коэффициентов

Я использую C#

ответ

0

Regexp выражения также должны быть осведомлены о отрицательных коэффициентов:

var pattern = @"(-?\d+)x\^?(\d+)?"; 
var formula = "2x^3+4x^2-6x+1=0"; 

foreach(Match match in new Regex(pattern).Matches(formula)) { 
    Console.WriteLine("Coefficent \"{0}\"\tPower \"{1}\"", 
     match.Groups[1].Value, match.Groups[2].Value); 
} 

Выход:

Coefficent "2" Power "3" 
Coefficent "4" Power "2" 
Coefficent "-6" Power "" 

Пожалуйста, обратите внимание: Вы должны уточнить картину РегВыр, если вы хотите к (а) принимать символы пробела в формуле или (б) нецелые коэффициенты.

+0

Как я могу найти константы, такие как +6 –

+0

@WalaaShaheen «+» можно игнорировать, поскольку оно не изменит числовое значение. Однако, если вы всегда хотите захватить знак, вы можете использовать это регулярное выражение: '@" ([+ -]? \ D +) x \ ^? (\ D +)? "'. – JimiLoe

+0

есть missunsderstand i означает, что мне нужно регулярное выражение, чтобы найти d в ax^3 + bx^2 + c^x + d = 0 , например 2x^3 + 4x^2-6x + 1 = 0, тогда выход будет 1, или если пример был 2x^3 + 4x^2-6x = -1, выход будет 1 .... спасибо –

1

Вы можете использовать @"(-?\d+)x\^?(\d+)?"

Matching группа 1 => коэффициенты

Matching группы 2 => Полномочия

См DEMO для объяснения и разведки.

Смежные вопросы