Ребму, 91 персонаж
Из-за Catch-22 я должен опубликовать, чтобы получить URL этого ответа. :-/ Хорошо, понял.
paTSrd http://codegolf.stackexchange.com/a/28154[th<a name="28154">th<code>cpCto</code>]prC
Rebmu это диалект Rebol, и вы можете прочитать все о нем . Эквивалент Rebol здесь будет:
parse to-string read http://codegolf.stackexchange.com/a/28154 [
thru <a name="28154">
thru <code>
copy c to </code>
]
print c
PARSE от Rebol - это своего рода очень грамотный ответ для RegEx. Он запускает позицию парсера ввода (это может быть любая последовательность, включая структурные блоки ... двоичные данные ... или строковые типы) . Правила являются языком для того, как перемещается позиция разбора.
Теги и URL-адреса - это всего лишь строки в языке. Но они «приправлены», и поскольку Rebol динамически набирается, вы можете проверить этот тип. Например, READ знает, что если вы дадите ей строку со вкусом URL, то он должен отправить ее обработчику схемы для чтения. (В этом случае тот, который зарегистрирован для HTTP). По умолчанию вы возвращаете байты UTF-8, поэтому мы используем to-string для его декодирования и получения серии кодовых точек в обычной строке Unicode.
В случае диалекта синтаксического анализа встреча с типом тега просто сопоставляется, как если бы это была строка, похожая на тег. THRU - это инструкция, означающая «пропустить, пока не будет найдено соответствующее правило, а затем поместить позицию соответствия в конец того, что вы только что сопоставили». (TO является аналогом, который соответствует, но оставляет позицию разбора перед элементом).
Таким образом, мы пронесемся мимо <a name="28154">
. Затем мы пронесемся мимо следующего вхождения <code>
, с нашей позицией синтаксического анализа, расположенной сразу после >
. Затем команда PARSE COPY позволяет нам копировать данные в другое правило, в данном случае это правило [TO </code>]
... так что мы попадаем в переменную C все вплоть до этого <
.
Круто , а? :-)
С технической точки зрения я мог бы TO "</"
сэкономить на этом больше, например, путем поиска и сохранения трех символов - нет необходимости сопоставлять весь </code>
конечный тег, когда это </
можно сделать. Подобные аргументы могут быть приведены для начального тега. Но Rebmu о грамотном гольфе ... даже если вы думаете, это поначалу выглядит странно!
ОБНОВЛЕНИЕ : /body
уловка из сумки, но я также собираюсь оставить это как есть ... потому что я думаю, что это более образовательно в этом смысле.