Въпрос за Regex
Конкретната задача е Football League от Programming Fundamentals Exam - 12 June 2016
Но въпросът не е за решението й, а за възможния реджекс за нея: как да се направи работещ патърн за извеждане на текст между ключова дума, зададена от input-а. Т.е. keytextkey. Проблемът е, че в нулевите тестове ключовата дума е с опция за мета чарове, т.е. трябва да бъдат искейпнати. Напр.:
key=?? или key=KZL
Текст:
??ecnarF?? ??kramneD??
fdKZLairagluBKZL KZLkramneDKZLll
Вариант за патърн в първия случай: @"(\?\?)([A-Za-z]+)(\?\?)"
Вариант за патърн във втория случай: @"(KZL)([A-Za-z]+)(KZL)"
Има ли вариант за патърн в общия случай: @"(key)([A-Za-z]+)(key)", където впоследствие "key" ще се риплейсне с input-а за нея?
Жоре /може ли?/, във VS2013 не бачка. Можеш ли да намериш друг вариант? /ще си изтегля и на този лаптоп 2015, но не сега, да мине изпита, че все още има вероятност да се запиша/
Няма проблем, да :)
Щом е от версията на VS, то по-добре си свали 2015, защото ще ти е по-лесно от Regex.Escape() варианта според мен.
Символите които escape-ва "@" са:
съответно другите символи, които са специални при regex, като ?, не се escape-ват. Затова и ако пробвате първият нулев пример на задачата с keyWord = "??" ще изгърми, защото въпросителните не са escape-нати с @-та. Така и ще стане и при други специални символи за regex:
Тука е описано всичко по-подробно - https://msdn.microsoft.com/en-us/library/4edbef7e(v=vs.110).aspx.