2013-10-03 4 views
0

Я новичок в использовании регулярного выражения, и у меня возникают проблемы с разбором строки. Я работаю над анализом формулы, заданной в виде строки, с использованием регулярного выражения.C# Разделите строковое представление формулы

В настоящее время мое регулярное выражение:

string[] formula_substrings = Regex.Split(formula, "(\\()|(\\))|(-)|(\\+)|(\\*)|(/)|(\\s+)") 

Один из тестов, что регулярное выражение не может обработать это когда формула имеет показатели.

Пример:

Formula = "1e-2 + 5.0" 

Мой требуемый выход

["1e-2", "+", "5.0"] 

, но я получаю

["1e", "-", "2", "+", "5.0"]. 

Я попытался изменить регулярное выражение, чтобы убедиться, что символ в передней части минус знак не указан e:

string[] formula_substrings = Regex.Split(formula, "(\\()|(\\))|((^e)-)|(\\+)|(\\*)|(/)|(\\s+)") 

И это вызывает проблемы, когда выражение

Formula = "5+5-2" 

Это даст выход:

["5", "+", "5-2"] 

Когда мой желаемый выход

["5", "+", "5", "-", "2"] 

Спасибо заранее помощь!

+0

Также читайте о жадном (*) и не жадном (*?) –

ответ

3

Вы можете использовать .. просмотр назад

Regex.Split(formula, @"(\(|\)|(?<!e|E)-|(?<!e|E)\+|\*|/|\s+)") 
           -------- -------- 
Смежные вопросы