| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Perl: Регулярные выражения > Как вырезать подстроку из результата поиска? |
| Автор: skripnik 15.3.2011, 19:24 | ||
| Допустим, на входе есть такие строки: 1. Иван сказал: «Выпьем, так сказать, за знакомство» 2. Борис отметил: «Да вы, так сказать, пижон, сударь» 3. Семён подытожил: «Сегодня грядёт, так сказать, пир на весь мир» На выходе нужно получить: 1. Выпьем за знакомство 2. Да вы пижон, сударь 3. Сегодня грядёт пир на весь мир Как это сделать с помощью PCRE? Какой должен быть шаблон? Что-то типа этого?
Но оно всё равно «так сказать» не вырезает из результатов поиска. Эта задача вообще решаема средствами PCRE? P. S. В том-то и заковырка, что нужно обойтись именно регулярными выражениями. Хочу понять, возможно ли это или же придётся усложнять логику функции в PHP. Задача на самом деле куда сложнее, это только для наглядности такой простой пример приведён. |
| Автор: alezzz 15.3.2011, 19:48 | ||
С PCRE не сталкивался, но судя по вашему выражению резальтат вы берете с первых сохраняющих скобок, но в них же входит и содержимое вторых скобок, не сохраняющих, просто результат совпадения не сохряняется в отдельную переменную. Попробуйте таким выражением с сохранением результата $1 и $2:
|
| Автор: ming 15.3.2011, 20:10 | ||||||
Но учитывая тот факт, что
то в случаях когда критично быстродействие, лучше применить серию:
|
| Автор: alezzz 15.3.2011, 21:15 |
к такому варианту /g в конце надо добавить |