Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Центр помощи > [JAVA] Regexp |
Автор: sergejzr 4.7.2008, 10:37 |
Приветы! ![]() мен надо парсить прологовские переменные из предиката. Это означает, что в выражении типа exp(X,Y,Z,'sdad') должны выпарсится переменные, начинающиеся с большой буквы т.е в этом случае: X Y Z Соответственно в таком выражении: exp1(exP2(X,Y,'fsdfds'),Z,a) тоже X,Y,Z При этом в самих предикатах Т.е надо всё из скобок, начинающееся с большой буквы, но не имя предиката. Можно это сделать коротко и красиво? и как? |
Автор: kemiisto 8.7.2008, 17:49 | ||
Давно я не заглядывал в Центр помощи. Регулярное выражение: (\W)([A-Z])+(\w)* То есть сначала любой символ, кроме латиницы или цифры, затем 1 или более заглавных латинских букв и, наконец, 0 или более латиницы или цифр. Группируем. Ответом будет группа 2 + группа 3. Я к сожалению не знаю, как это записать на Java, но на Delphi
В архиве исходник + откомпилированная программа. |
Автор: sergejzr 8.7.2008, 23:28 |
Спасибо! ![]() |
Автор: Stqs 11.7.2008, 00:27 | ||
очень интересно пытаюсь на java переписать функцию - ничего не получается
проверка matches дает false.. это что-то у меня неверно или регулярка всетаки неправильная? и еще могут ли переменные быть вида "Xxx"? то есть строка вида exp(Xxx,Yyy,Zzz,'sdad') ? если да - то регулярка точно не подходит.. ) |
Автор: kemiisto 11.7.2008, 14:37 | ||
Stqs, до сегоднешнего дня я знал только то, что Java - это ЯП. Но Вы вынудили меня попотеть. Итог:
Вот что у меня получилось. Это почти полный аналог Delphi-кода. И вроде работает ![]() |
Автор: sergejzr 11.7.2008, 16:31 | ||
Спасибо ещё раз! ![]()
|
Автор: Stqs 11.7.2008, 20:54 |
![]() копировал и запустил последнюю версию - вывод - Ysdfsdf, Z, L куда девается Xg ? |
Автор: Stqs 11.7.2008, 21:59 |
ага все разобрался извиняюсь ![]() действительно все работает... |