2014-08-30 2 views
1

В моем стремлении изучить flex У меня есть эхо-сигнал сканера, добавляющий номера строк.Регулярное выражение для соответствия последнему разрыву строки в файле

После каждой строки я показываю счетчик и увеличиваю его.

Проблема: в конце дисплея всегда есть номер одиночной линии.

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

Я пробовал [\n/<<EOF>>] безрезультатно.

Любые мысли?

+0

В вашем стремлении изучить flex - используйте тег flex-lexer, а не тег 'flex'. Последнее предназначено для вопросов Adobe/Apache Flex. –

ответ

0

Вы пробовали просто делать:

\n$ 

Regular expression visualization

Debuggex Demo

\n соответствует новой строки, то $ спичек конец строки.

+0

Нет кубиков. Он поднимает все новые строки. – MayNotBe

+0

Я не знаком с flex. Не могли бы вы представить какой-то контекст относительно того, как вы используете выражение? Может быть, отправьте образец кода или ссылку на ссылку функции? Я говорю это, потому что, если вы используете то, что обрабатывает ваш ввод строки за строкой и применяя регулярное выражение к каждой строке, тогда решить проблему с помощью регулярного выражения невозможно. – briantist

+0

Это строка за строкой - я работаю над ней. Благодаря! – MayNotBe

2

Я не знаю, что движок регулярных выражений использует Flex, но вы можете использовать это регулярное выражение:

\z 

Working demo

\ г положение утверждают в самом конце строки.

Соответствует концу строки. В отличие от $, это не зависит от многострочного режима и, в отличие от \ Z, не будет соответствовать до завершающей новой строки в конце строки.

enter image description here

Если выше регулярное выражение не работает, то вы можете использовать этот один:

(?<=[\S\s])$ 

Working demo

Edit: так прогибается, кажется, работает несколько иначе, чем другие regex, вы можете использовать это регулярное выражение:

[\s\S]$ 

Чтобы получить последний символ каждой строки. Затем вы можете повторять все строки, пока не получите последний. Здесь у вас есть онлайн гибкий инструмент регулярных выражений:

http://ryanswanson.com/regexp/#start

enter image description here

+0

Это классный сайт! Спасибо за ссылку. К сожалению, не было регулярного выражения, но мне нравится, что вы сделали там на втором! – MayNotBe

+0

@MayNotBe Я обновил свой ответ с помощью подхода, который может вам помочь. Кстати, я добавил также ссылку на онлайн-инструмент движка regex. Надеюсь помочь –

1

Try ниже регулярное выражение, он будет искать для новой строки в конце строки.

\n$ 
+0

Спасибо, я тоже пробовал это. Он поднимает все новые строки, а не только последние. – MayNotBe

+0

Это работает для моего случая и выбирает только последний. – Jan

Смежные вопросы