Форум русскоязычного сообщества Ubuntu


Хотите сделать посильный вклад в развитие Ubuntu и русскоязычного сообщества?
Помогите нам с документацией!

Автор Тема: Нужно регулярное выражение  (Прочитано 834 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Красноглазый

  • Автор темы
  • Активист
  • *
  • Сообщений: 702
    • Просмотр профиля
Нужно регулярное выражение
« : 05 Июля 2012, 11:51:12 »
Если есть специалисты по регулярным выражениям, ПОМОГИТЕ!

Всю голову уже сломал. Есть длинная строка, в которой записана некая программа. Задача разобрать программу на составные части. Все разбирается хорошо, но застрял на выделении строк в формате си, т.е. в двойных кавычках с модификатором \.

Короче нужно регулярное выражение, которое найдет следующие варианты:
"" - пустая строка
"Hello World!" - простая строка
"\"Hello\" World!" - строка с двойными кавычками внутри
"\\Hello World!\\" - строка с обратными слешами внутри
и любое их сочетание.

Есть такой вариант:
/((")(.*)(["&&(?!\\")]))/g

Он работает без учета двойных слешей (\\), но только если строка единственная, иначе загребает от начала первой строки до конца последней. Как заставить искать все строки мозга сообразить не хватает. Ленивая квантификация не срабатывет или я что-то не так делаю... Про двойные слеши еще даже не думал, но тоже требуется.

andrey_p

  • Гость
Re: Нужно регулярное выражение
« Ответ #1 : 05 Июля 2012, 15:41:25 »
Посмотри здесь.

Оффлайн Красноглазый

  • Автор темы
  • Активист
  • *
  • Сообщений: 702
    • Просмотр профиля
Re: Нужно регулярное выражение
« Ответ #2 : 05 Июля 2012, 16:00:15 »
СПАСИБО! Ты спас мой мозг!
Правда я успел написать простенькую процедуру, делающую тоже самое без регулярных выражений, но по объему и быстродействию она, естественно, хуже.
По ссылке второй и третий варианты вполне рабочие, а первый повесил браузер намертво.
Теперь осталось только осознать и запомнить... :)

Оффлайн alexander.pronin

  • Старожил
  • *
  • Сообщений: 2539
    • Просмотр профиля
Re: Нужно регулярное выражение
« Ответ #3 : 06 Июля 2012, 08:19:21 »
Проверять здесь
http://gskinner.com/RegExr/
Ничего удобнее пока не видел.
« Последнее редактирование: 06 Июля 2012, 08:21:20 от alexander.pronin »

Оффлайн Красноглазый

  • Автор темы
  • Активист
  • *
  • Сообщений: 702
    • Просмотр профиля
Re: Нужно регулярное выражение
« Ответ #4 : 09 Июля 2012, 20:31:44 »
Спасибо за ссылку. Иногда действительно не очень удобно отлаживаться. Но вот сегодня вроде бы все заработало как надо. Имеется ввиду вся совокупность кода, регулярных выражений и данных.
Чувствую надо все-таки плотнее заняться изучением регулярных выражений. С ними код получается реально короче.

Еще раз всем спасибо!

Оффлайн Чистый

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 3473
  • nix - вот оно счастье...
    • Просмотр профиля
Re: Нужно регулярное выражение
« Ответ #5 : 09 Июля 2012, 22:24:21 »
Чувствую надо все-таки плотнее заняться изучением регулярных выражений. С ними код получается реально короче.
и реально медленнее, используйте их тогда когда без них никак...
Тестовый репозиторий kdeNeur ppa:devcode/kdeneur
各々が死ぬことをどのように決定する

 

Страница сгенерирована за 0.02 секунд. Запросов: 22.