| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Perl: Общие вопросы > Помогите составить правильное регулярное вырожение |
| Автор: unkis 26.2.2008, 16:21 |
| Ребята мне нужно следующее, есть такая строка "(d h/d y) + (d^5 h/d y^5)" её нужно преобразовать вот в такое "diff(h,y) + diff(h,y,5)" Как видно из задания вместо ^5 может стоять любая другая цифра, а может и вообще ^5 не быть. к примеру "(d h/d y) + (d^2 s/d x^1)" Также вместо букв "h" и "y" могут стоять другие буквы к примеру "(d s/d x) + (d^5 s/d x^5)" Помогите реализовать такое преобразование. |
| Автор: ginnie 26.2.2008, 18:36 | ||
|
| Автор: arto 26.2.2008, 19:50 |
| s#\(d(?:\^(\d+))?\s+(\w+)/d\s+(\w+).*?\)#defined$1?"diff(".$2.",".$3.",".$1.")":"diff(".$2.",".$3.")"#ge Добавлено через 9 минут и 4 секунды или так: s#\(d(?:\^(\d+))?\s+(\w+)/d\s+(\w+).*?\)#defined$1?"diff($2,$3,$1)":"diff($2,$3)"#ge |
| Автор: ginnie 26.2.2008, 20:09 | ||||
Исправленная версия, которая корректно обрабатывает отсутствие степени
от кода arto отличается тем, что не преобразует строку
Но у arto красивее! |