2010-05-13 3 views
1

мне нужно отформатировать некоторые шестнадцатеричные так:начать работу с Лексом

00010: 02 03 04 05 
00020: 02 03 04 08 
00030: 02 03 04 08 

00010: 02 03 04 05 
00020: 02 03 04 05 
02 03 04 05 
02 03 04 08 
‍ 

к

02 03 04 05 
02 03 04 08 
02 03 04 
02 03 04 05 
02 03 04 05 
02 03 04 05 
02 03 04 
  • удалить поля адреса, если он присутствует

  • удалите 08 на конец абзаца (за которым следует пустая строка)

  • удалить пустые строки

Как это может быть сделано с помощью lex? благодаря!

ответ

1

Нельзя напрямую использовать lex. Лекс - это токенизатор, а не парсер.

Честно говоря, это можно сделать с использованием регулярного выражения и не требует сложностей генератора сканера + генератор парсера.

+0

Согласен, закон, вероятно, больше инструментов, чем вы нужно что-то подобное. –

1

Если вы чавкать во всем файле как одну строку, я думаю, что эти регулярные выражения будут делать то, что вы хотите (написанные для Perl, но не тестировался):

s/^\d{4}: //mg 
s/ 08\n\s*\n/\n/g 
s/^\s*$//mg 
Смежные вопросы