Регулярные выажения

Перевод этого плана с русского на русский:) :

Поиск с заменой

В методичке нет про поиск с заменой sub()

Ещё почитать

Д/З

  1. Прочитать и прощёлкать
  2. EJudge: RegexDump 'Структура РВ'

    Написать программу, которой на вход подаётся синтаксически верное регулярное выражение, а затем — строки поиска (последняя строка пустая). Программа должна выводить информацию о первой найденной в строке поиска подстроке, соответствующей регулярному выражению, в таком формате:

    • Если подстрока не найдена, выводится «<NONE>»

    • Если подстрока найдена, выводится позиция: подстрока, где «позиция» — это номер символа в строке, начиная с которого была найдена подстрока

    • Если в регулярном выражении присутствовала группировка с сохранением (попросту скобочки), выводится номер группы/позиция: подстрока для каждой группы

    • Если в регулярном выражении присутствовали именованные группы, выводится имя группы/позиция: подстрока для каждой группы

    • Если какая-то группа присутствует в исходном выражении, но не нашла сопоставления (например, была помечена повторителем * и пропущена), она не выводится

    Input:

    (\w)+(@+)?(?P<nonalpha>\W+)--(\w+)
    ^_^awww-----foo;_;
    #$qwer@@@--wqer#$
    Output:

    3: awww-----foo
    1/6: w
    3/7: ---
    4/12: foo
    nonalpha/7: ---
    2: qwer@@@--wqer
    1/5: r
    2/6: @@
    3/8: @
    4/11: wqer
    nonalpha/8: @

    TODO

  3. <<EJCMC(148, ChicagoTurabian, Чикаго Турабьян)>> Написать программу, которой на вход подаётся две строки — библиографическая ссылка B на некоторую книгу и внутритекстовая ссылка N на эту же книгу. программа должна проверить, что обе ссылки синтаксически верны и ссылаются на одну и ту же книгу. Формат ссылок — упрощённый стиль Турабьян (описан здесь, нас интересуют только целые книги с произвольным количеством авторов без редактора и иных соучастников, т. е. описание до слов «Editor, translator, or compiler instead of author»). Вывод программы — строка из трёх True или False, отражающих, соответственно, корректность B, корректность N и адекватность ссылок друг другу.

    • Будем считать, что страница может быть указана или одна, или диапазоном
      • Во всех примерах со страницами «» — это не «» и не «-». Серьёзно!

    • Будем считать, что у первого автора всегда есть и имя, и фамилия
    • Обратите внимание на т. н. «оксфордскую запятую» перед словом «and»
      • Будем считать, что она соблюдается в B и не соблюдается в N (в примерах ниже по ссылке есть и то, и то, осторожнее ☹)

    • Можно проверить с помощью примеров с оф. сайта (только раздел «BOOK»)

  4. <<EJCMC(148, PigLatin, Поросячья латынь)>> Согласно правилам «поросячьей латыни» английские слова при разговоре преобразуются так:

    • Если слово начинается на согласную — эта согласная переносится в конец слова, после чего добавляется «ay»: "latin" ⇒ "atinlay"

    • Если слово начинается на несколько согласных, они все переносятся в конец слова, после чего добавляется «ay»: "stupid" ⇒ "upidstay"

    • Если слово начинается на гласную, и имеет более одного слога, лидирующая гласная и все согласные за ней переносятся в конец с добавлением «ay»: "under" ⇒ "erunday" (в Википедии это второй вариант)

      • для нашего удобства непроизносимые гласные тоже считаются слогом, например "are" ⇒ "earay"; (так исторически не было: язык всё-таки разговорный)

    • Односложные слова, начинающиеся на гласную, просто дополняются «yay»: "egg" ⇒ "eggyay"

    Написать программу, которая вводит «английский» текст (текст, содержащий последовательности латинских букв и другие символы) и выводит перевод на поросячью латынь (для простоты любая последовательность английских букв с гласными считается словом). Обратите внимание на то, что слово, написанное со прописной буквы, в поросячьей латыни также пишется со прописной буквы.

    • This is an example of Hog Latin. As you can see, it’s silly, but lots of fun for children.
      Isthay isyay anyay ampleexay ofyay Oghay Atinlay. Asyay ouyay ancay eesay, ityay’s illysay, utbay otslay ofyay unfay orfay ildrenchay.