На главную
ПРАВИЛА FAQ Помощь Участники Календарь Избранное DigiMania RSS
msm.ru
Модераторы: ALXR, Pr0[)!9Y, Profi
  
    > разбить строку на подстроки, выделить имена авторов и название книги
      Уважаемый форум,

      Существует такой ресурс: http://techlibrary.ru/ Там есть общий список публикаций. Задача: строчку разделить на подстроки: автор, название, год и т.д.
      Год выпуска я выделил:
      ExpandedWrap disabled
        sed -r "s/([0-9]{4}\.djvu)/;\1;/g" blst.csv > glst.csv


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

      Анатолий
        Приведите, если не сложно, примеры строк для разбора.
          Цитата Славян @
          Приведите, если не сложно, примеры строк для разбора.

          Изначально:

          Абаимов С.Г. Статистическая физика сложных систем. От фракталов до скейлинг-поведения. 2012.djvu - 2477345 байт
          Абакумов В.Н., Перель В.И., Яссиевич И.Н. Безызлучательная рекомбинация в полупроводниках. 1997.djvu - 3211005 байт
          Абалакин В.К. Основы эфемеридной астрономии. 1979.djvu - 4946267 байт

          После применения
          ExpandedWrap disabled
            sed -r "s/([0-9]{4}\.djvu)/;\1;/g" blst.csv > glst.csv
          :

          Абаимов С.Г. Статистическая физика сложных систем. От фракталов до скейлинг-поведения. ;2012.djvu; - 2477345 байт
          Абакумов В.Н., Перель В.И., Яссиевич И.Н. Безызлучательная рекомбинация в полупроводниках. ;1997.djvu; - 3211005 байт
          Абалакин В.К. Основы эфемеридной астрономии. ;1979.djvu; - 4946267 байт

          Я попробовал
          ExpandedWrap disabled
            sed -r "s/((^[А-Я][а-я]+\s([А-Я]\.){1,2})/\1;/g" plst.csv  >qlst.csv
          , чтобы выделить хотя бы первого автора. Выдает ошибку:
          ExpandedWrap disabled
            C:\USERS>sed -r "s/((^[А-Я][а-я]+\s([А-Я]\.){1,2})/\1;/g" plst.csv  1>qlst.csv
            sed: -e expression #1, char 39: Unmatched ( or \(


          Да, у меня
          ExpandedWrap disabled
            C:\USERS>sed --version
            GNU sed version 4.2
            Copyright (C) 2003 Free Software Foundation, Inc.
            This is free software; see the source for copying conditions.  There is NO
            warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE,
            to the extent permitted by law.
          Сообщение отредактировано: askrotov -
            Я не sed'ом пользовался, но вот такой поиск использовал:
            ExpandedWrap disabled
              ([А-Яа-я]+)\s([А-Я][\.]\s|[А-Я][\.][А-Я][\.]\s)([А-Яа-я]+)
            с заменой на
            ExpandedWrap disabled
              \1 \2;\3
            Получил из такого:
            ExpandedWrap disabled
              Абаимов Ш.Г. Статистическая физика сложных систем. От фракталов до скейлинг-поведения. 2012.djvu - 2477345 байт
               Абакумов П.Ц., Перель В.И., Яссиевич И.Н. Безызлучательная рекомбинация в полупроводниках. 1997.djvu - 3211005 байт
               Абалакин П.Д. Основы эфемеридной астрономии. 1979.djvu - 4946267 байт
              Кант И. Что-то про чистый разум. 1813.djvu - 2477345 байт
            такое:
            ExpandedWrap disabled
              Абаимов Ш.Г. ;Статистическая физика сложных систем. От фракталов до скейлинг-поведения. 2012.djvu - 2477345 байт
               Абакумов П.Ц., Перель В.И., Яссиевич И.Н. ;Безызлучательная рекомбинация в полупроводниках. 1997.djvu - 3211005 байт
               Абалакин П.Д. ;Основы эфемеридной астрономии. 1979.djvu - 4946267 байт
              Кант И. ;Что-то про чистый разум. 1813.djvu - 2477345 байт
            Вроде бы авторы выделены... :blush:
            Надеюсь, переведёте к деталям своей системы?..
              если "в лоб" можно попробовать так:
              ExpandedWrap disabled
                ^((.+?)[А-Я]{1}[.])\s(.+?)\s(((19|20)[0-9]{2})\D+)\s-\s((\d+)\s\S+)$
              user posted image
                Цитата Славян @
                , спасибо, за помощь
                  Цитата askrotov @
                  спасибо, за помощь
                  Пожалуйста. И вам спасибо, - я хоть что-то по регуляркам в голове своей освежил... :blush:
                  0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                  0 пользователей:


                  Рейтинг@Mail.ru
                  [ Script Execution time: 0,1505 ]   [ 17 queries used ]   [ Generated: 23.10.19, 13:03 GMT ]