regexp

Форум предназначен для новичков. В нем предполагается рассматривать вопросы, которые встают на первых этапах освоения Linux
kavenchuk
Фанатеющий
Сообщения: 147
Зарегистрирован: 02 июл 2003, 12:37

regexp

Сообщение kavenchuk »

Книжку умную купил - читаю. Но это не так быстро (лирическое отступление в свое оправдание :))
Суть: нужна парочка выражений:
1. если в строке нечетное количество двойных кавычек (") - заменить конец строки \n на \\n и доклеить следующую строку в хвост этой.
2. если символ табуляции \t стоит после нечетного количества двойных кавычек (") от начала строки - заменить на \\t.
Если простыми выражениями этого не сделать - ладно, буду штудировать дальше книжку.
С уважением, Ярослав Кавенчук.

Аватара пользователя
mend0za
Неотъемлемая часть форума
Сообщения: 2332
Зарегистрирован: 30 авг 2002, 12:33
Откуда: Minsk

Сообщение mend0za »

1. и 2. можно реализовать imho только совместно с каким-нить языком программирования.
И увидел я зверя, выходящего из тундры. И число его было 3.14159265358979324...

Аватара пользователя
leikind
Неотъемлемая часть форума
Сообщения: 811
Зарегистрирован: 20 июн 2002, 03:02
Откуда: Брюссель
Контактная информация:

Сообщение leikind »

вот этот регексп

Код: Выделить всё

^(\"\")*\"\t
сработает для
символ табуляции \t стоит после нечетного количества двойных кавычек (") от начала строки
Изображение

Аватара пользователя
leikind
Неотъемлемая часть форума
Сообщения: 811
Зарегистрирован: 20 июн 2002, 03:02
Откуда: Брюссель
Контактная информация:

Сообщение leikind »

Не совсем я правильно ответил - имелась ввиду то строка ,где " могут быть расположены неконтактно. Тогда немного добавим в регексп, чтобы упростить понимание, я считаю не '"', а символ 'a', принцип подсчета нечетности все равно один. Пример на Ruby, но регексп будет работать и в других языках:

Код: Выделить всё

["qqq", "qqqaqqq", "qqqaqqqaqqq", "qqqqaqqqqaqqqqa"].each{|str|
     puts str + " -> " + str.sub(/^([^a]*?a[^a]*?a)*?[^a]*?a[^a]*$/,"нечет")
}
выход:

Код: Выделить всё

qqq -> qqq
qqqaqqq -> нечет
qqqaqqqaqqq -> qqqaqqqaqqq
qqqqaqqqqaqqqqa -> нечет
Изображение

Ответить