Служба поддержки:
Реквизиты оплаты:





Голосование
Реклама от Google:
Гл. 8. Редактирование 147
19.06.2012 00:19
|
Регулярные выражения Вторым скользким методом в редакторе ed является металитера: литера, которая является не тем, чем кажется. Это скользкое место возникло как результат одного из самых обычных явлений в информатике: некое простое средство делается намного более общим и мощным; возникает, однако, одна небольшая проблема: это простое средство больше не является простым. В данном случае это явление проявилось в связи с контекстным поиском. Когда вы проводите такой поиск, вы в действительности ищете образец. В приведенных простых примерах этот образец до сих пор состоял только из фиксированных литер, например /темной/. Однаио образец может содержать и переменные элементы. Такие переменные элементы указываются с помощью металитер — литер, имеющих особый смысл. Мы уже видели использование металитер в оболочке. Металитерами оболочки являются такие литеры, как * и ?. Однако металитеры редактора ed сильно отличаются от металитер оболочки. Ниже приводится список некоторых металитер редактора: означает любую литеру. (Точка, как известно, в ре- дакторе ed является первейшим кандидатом на роль литеры специального назначения.) Так, /c.t/ со- поставляется cat, czt, c-ft и т.д.; x* здесь х—любая литера; означает любое число литер х, в том числе и нуль. Так, цепочке /ab*d/ соответст- вует любая комбинация вида ad, abd, abbd и т. д. Аналогично, /a.*d/ сопоставляется с любой цепочкой, начинающейся с а и оканчивающейся на d; (следует иметь в виду, однако, что aи d должны быть в од- ной и той же строке, поскольку ed — построчный редактор. Если в строке более одной литеры а или d, то /a.*d/ сопоставляется с цепочкой, начинающейся первой литерой а и оканчивающейся последней ли- терой d); $ обозначает конец строки. Так, /d$/ сопоставляется с литерой d в конце строки. Такое использование $ в чем-то аналогично применению $ для обозначения последней строки буфера, например 1,$р; ^ обозначает начало строки. Так, /^T/ сопоставляется с Т в начале строки; /^$/ сопоставляется с пустой строкой; [АаЬ] обозначает или А, или а, или Ь. (Это один из слу- чаев, когда металитеры редактора и оболочки интер- претируются одинаково.) |