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

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

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

В методичке нет про поиск с заменой 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: @
  3. EJudge: ChicagoTurabian 'Чикаго Турабьян'

    Написать программу, которой на вход подаётся две строки — библиографическая ссылка B на некоторую книгу и внутритекстовая ссылка N на эту же книгу. программа должна проверить, что обе ссылки синтаксически верны и ссылаются на одну и ту же книгу. Формат ссылок — упрощённый стиль Турабьян. Вывод программы — True, если B соответствует N, и False — если не соответствует, или такое соответствие невозможно определить из-за синтаксической некорректности

    • Полное описание стиля для задачи с примерами

      • Обратите внимание на то, как в B слились точка после инициала автора и точка после списка авторов.

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

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

    Input:

    42. Roger Frey, Utility and Rights (Minneapolis: University of Minnesota Press, 1984), 95.
    Frey, Roger. Utility and Rights. Minneapolis: University of Minnesota Press, 1984.
    Output:

    True
  4. EJudge: PigLatin 'Поросячья латынь'

    Согласно правилам «поросячьей латыни» английские слова при разговоре преобразуются так:

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

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

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

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

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

    • Слова без гласных не изменяются. Гласными считаются "aouieAOUIE", но не "Y/y". Это случайно здесь оказавшееся требование, которое я не буду удалять, потому что некоторые уже решили так.

    • Апостроф считается согласной буквой (маленькой), а дефис — разделителем (опять-таки для простоты)

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

    Input:

    This is an example of Hog Latin. As you can see, it's silly,
    but lots of fun for children.
    Output:

    Isthay isyay anyay ampleexay ofyay Oghay Atinlay. Asyay ouyay ancay eesay, it'syay illysay,
    utbay otslay ofyay unfay orfay ildrenchay.

LecturesCMC/PythonIntro2020/09_RegularExpressions (last edited 2020-11-07 13:47:57 by ArsenyMaslennikov)