Loading...
anto84 avatar anto84 16 Точки

[Technical issue] C# - regex

В момента уча за регекс и имам следния проблем:

string input = "(1+9)%6–(7%2)*8=";

искам с регекс да получа 

string [] result = ["(1+9)", "%6–", "(7%2)", "*8="]; 

тоест да разделя стригна по двата израза в скобите и резултата да запища в масив от стрингове.

Пробвам с нещо от сорта на 

string pattern = @"\(.*?\)";
string[] result = Regex.Split(input, pattern);

но не мога да го докарам.

Ще се радвам ако някой може да ми помогне.

 

 

Тагове:
0
Programming Basics 13/01/2015 00:55:21
Filkolev avatar Filkolev 4482 Точки
Best Answer

Ползваш ли сайтове, с които да си тестваш регексите? Аз лично съм почитател на Regex101.

Имаш според мен два проблема - самият регекс и подходът със сплитването.

Ето код, който поне с твоя пример връща правилните данни: ЦЪК.

Може да прочетеш за методът Matches ТУК. Там е описано как точно може да достъпиш всяко парче от резултата.

 

Това изглежда като задача за пресмятане на израз от стринг. Не знам дали регулярният израз ще ти помогне в случая, но има не много сложни подходи към такъв род задачи. Пробвай да я решиш, както си тръгнал, но ти препоръчвам да опиташ и нещо по-стандартно. Доста хора допускат грешката да ползват твърде advanced неща за решаване на не толкова сложни проблеми, което усложнява логиката неимоверно, без да е реално необходимо.

 

0
anto84 avatar anto84 16 Точки

Мерси, 

да ползвам сайтове за регекс но още се уча.  Ползвам

http://regexhero.net/tester/ за .NET

http://www.regexr.com/ за JavaScript

http://www.phpliveregex.com/ за php

а иначе изразът е от задача 3 на изпит C#1 от Телерик Академия от 06.12.2014 evening. условието го има в bgcoder.com. В примерното решение задачата е решена с while цикли но аз исках да пробвам и с regex.

0
Filkolev avatar Filkolev 4482 Точки

Досетих се коя е задачата, те са всъщност две такива. Няма лошо да експериментираш, със сигурност ще ти е полезно.

Иначе за сайтовете, не виждам нужда за всеки език да имаш отделен такъв. Regexr и Regex101 имат опции за избор на език, на втория даже се вижда много лесно отстрани, че може да работиш и с PHP, и с JS. За C# всичко работи, тъй че няма значение много-много сайта, езикът поддържа всичко, което съм ползвал; в това отношение JS е по-проблемен. Препоръчвам Regex101, защото показва цялата информация нагледно в панелите - всички мачове и групи, подробни обяснения какво прави изразът ти и т.н.

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.