Другой вид Meta Regex Golf


42

Обратите внимание: следуя популярному требованию, я немного смягчил правила:

  • Максимальный размер регулярного выражения увеличивается на 1 байт каждые 5 ответов . Ответ N может использовать до 29 + ⌈N / 5⌉ байтов.
  • Оценка каждого ответа будет (M / (30 + N / 5)) N

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

Это то, что мы собираемся сделать, но каждый раз, когда кто-то отвечает, его регулярное выражение будет добавляться к одному из двух наборов строк (по своему выбору). Поэтому в этом вызове существует строгий порядок ответов.

Давайте рассмотрим пример:

  • Скажем, я начинаю это с abc(что я не буду), и помещаю это в набор совпадений .
  • Тогда правильным будет второй ответ a, так как он соответствует приведенному выше (и пока нет строк, которые должны завершиться с ошибкой). Скажите, что этот ответ идет в наборе ошибок .
  • Теперь третий ответ должен совпадать, abcно потерпеть неудачу a. Возможный третий ответ поэтому b. Давайте поместим это в набор совпадений .
  • Четвертый ответ теперь должен совпадать abcи b, но провалиться a. Мы будем запрещать повторяющиеся ответы, поэтому действительное регулярное выражение будет c|b.

Важно то, что ваш ответ должен быть максимально коротким. Это может быть тривиально для первых нескольких ответов, но как только мы получим несколько ответов, будет все труднее и сложнее получить желаемое совпадение в минимально возможном количестве символов.

Для реальной задачи изначально набор совпадений содержит, PPCGа набор неудач содержит [PPCG], и я уже предоставил первый ответ.

Ответ

Главное, что нужно понять в этой задаче, - это то, что только один человек может ответить одновременно, и каждый ответ зависит от предыдущего .

Никогда не должно быть двух ответов с одинаковыми N. Если два человека одновременно отвечают за Nкого- то , тот, кто ответил позже (даже если разница в несколько секунд), должен любезно удалить свой ответ.

Чтобы сделать это немного более плавным, попробуйте придерживаться следующих шагов при публикации вашего ответа:

  • Убедитесь, что кто-то самостоятельно проверил правильность предыдущего ответа (и оставил соответствующий комментарий).
  • Возьмите два набора тестов, найденных в предыдущем ответе, и напишите регулярное выражение, которое соответствует всем строкам в одном наборе и ни одной в другом.
  • Опубликуйте свой ответ в следующем формате:

    # N. [regex flavour] - [regex size in bytes]
    
        [regex]
    
    [link to online regex tester]
    
    [notes, explanation, observations, whatever]
    
    ### The next answer has to match the following strings:
    
        [match set]
    
    ### And fail on these strings:
    
        [fail set]
    

    где Nномер вашего ответа. Пожалуйста, скопируйте [match set]и [fail set]из предыдущего ответа и добавьте свое регулярное выражение к одному из них.

    Это абсолютно необходимо для вызова! Я предоставил инструментальную панель для решения этой задачи, чтобы помочь с бухгалтерией, и он опирается на вышеупомянутый шаблон. (См. Нижнюю часть поста.)

  • Теперь другой пользователь должен просмотреть вашу заявку и оставить комментарий «Проверена правильность», если ваш ответ соответствует всем правилам (см. Ниже). Если это не так, они должны оставить комментарий, указывая на любые недостатки. У вас есть 15 минут, чтобы решить эти проблемы. Если вы этого не сделаете, ваш ответ будет считаться недействительным, должен быть удален, и кто-то другой может опубликовать последующий ответ на предыдущий. (Если это произойдет, вы можете в любое время отправить новый ответ.)

Эти правила могут показаться довольно строгими, но они необходимы, чтобы избежать неправильных ответов где-нибудь в цепочке.

правила

  • Пользователь может отправить только один ответ за 4 часа. (Это сделано для того, чтобы пользователи не могли постоянно следить за вопросом и отвечать на него как можно больше.)
  • Пользователь не может отправить два ответа подряд. (например, так как я отправил ответ 1, я не могу сделать ответ 2, но я мог сделать 3.)
  • Не редактируйте ответы, которые были проверены. (Даже если вы найдете способ сократить его!)
  • Если в цепочке будет обнаружена ошибка ранее (т. Е. После того, как будут опубликованы последующие ответы), ошибочный ответ должен быть удален и будет удален из набора строк, в которых новые представления не будут выполнены. Тем не менее , все ответы, которые были опубликованы с тех пор, не должны быть изменены, чтобы отражать.
  • Четко укажите один аромат, в котором действует ваше регулярное выражение. Вы можете выбрать любой аромат, который можно свободно протестировать в Интернете. На StackOverflow есть хороший список онлайн-тестеров . В частности, Regex101 и RegexPlanet должны быть полезны, так как они поддерживают широкий спектр вкусов. Пожалуйста, включите ссылку на тестера, которого вы выбрали в своем ответе. Включив в gтестере mмодификаторы lobal и ultiline, вы можете протестировать все строки сразу, по одной в каждой строке (эти модификаторы не учитываются в размере вашего регулярного выражения, поскольку они не нужны для какой-либо отдельной строки).
  • Ваше регулярное выражение не должно быть пустым.
  • Ваше регулярное выражение для ответа N не должно быть длиннее 29 + ⌈N / 5⌉ байтов. Т.е. ответы с 1 по 5 могут использовать до 30 байтов (включительно), ответы с 6 по 10 могут использовать до 31 байта ... ответы с 31 по 35 могут использовать до 36 байтов. Проверьте панель инструментов, чтобы увидеть, сколько символов может использовать следующий ответ.
  • Ваше регулярное выражение не должно быть идентичным какой-либо строке в любом наборе тестов.
  • Не включайте разделители в ваше представление или количество байтов, даже если их использует соответствующий язык хоста. Если ваше регулярное выражение использует модификаторы, добавьте один байт на каждый модификатор к размеру регулярного выражения. Например /foo/i, будет 4 байта.

счет

Оценка каждого ответа рассчитывается как (M / (30 + N / 5)) N , где M - размер регулярного выражения в байтах, а N - его число. Оценка каждого пользователя является продуктом всех их ответов. Пользователь с самым низким общим счетом выигрывает. В маловероятном случае ничьей побеждает пользователь с последней отправкой. Я приму последний ответ этого пользователя.

Если вы предпочитаете суммировать баллы, вы можете рассчитать баллы каждого ответа как N * (log (M) - log (30)) и суммировать их по всем ответам. Это даст тот же порядок в таблице лидеров.

Там нет необходимости включать оценку ответа в в ответ, просто сообщить M . Панель задач в нижней части вопроса подсчитает баллы, и в случае двух очень близких баллов я дважды проверю результаты, используя типы произвольной точности.

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

Панель приборов

Я написал небольшой инструмент Dashboard, использующий фрагменты стека, на основе работы оптимизатора здесь . Я надеюсь, что это поможет нам навести порядок в этих зависимых от ответа задачах.

Это отобразит текущий статус запроса - в частности, если есть противоречивые ответы, если ответ необходимо проверить, или если следующий ответ может быть опубликован.

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

Пожалуйста, дайте мне знать (в идеале в чате ), если вы обнаружите какие-либо ошибки или у вас есть идеи, как можно повысить полезность инструмента.


Правила оказались немного строже, чем я предполагал. После некоторого обсуждения в чате я собираюсь немного ослабить правила после того, как щедрость закончилась. Я опубликую 3 комментария для вариантов, о которых я могу думать ниже. Пожалуйста, укажите ваши предпочтения, проголосовав за комментарии.
Мартин Эндер

2
Правила есть правила. Не меняй их. Это может быть позором, что практически невозможно опубликовать другой ответ, но это не оправдывает изменение правил.
Мартин Эндер

2
Разрешить дополнительный байт каждые 10 ответов. Соответственно, изменить счет ответ на (M / (30 + N / 10)) ^ N . Это будет применяться задним числом, поэтому следующий ответ может использовать до 32 байтов. Изменение в оценке не повлияет на два верхних места в таблице лидеров, но другие пользователи будут несколько перемешаны.
Мартин Эндер

8
Разрешить дополнительный байт каждые 5 ответов. Соответственно, изменить счет ответ на (M / (30 + N / 5)) ^ N . Это будет применяться задним числом, поэтому следующий ответ может использовать до 35 байт. Изменение в оценке не повлияет на два верхних места в таблице лидеров, но другие пользователи будут несколько перемешаны.
Мартин Эндер

4
Вы люди странные и извращенные. Зачем вы делаете это для себя? (Хотя читать весело: P)
Джо

Ответы:


5

42. Вкус Python - 38

\?[^w$]*\$$|^P|\w.\)|w.?\+|w\^|[^?P]P$

Проверено на Regex101

Отсутствие энтропии в последних нескольких ответах дошло до меня ... (следовало бы сделать это раньше)

Следующий ответ должен соответствовать следующим строкам:

PPCG
^P
^[P^]P
[^?][PG]$
(?<!\\..)(?!]).$
^[\w^]*$|!|]P|G]\$$
!|[^?]P(CG|G..)?$
[^])]\$|^\^?P|P.\].$
([.$?]|G\])\$$|^\^?P|\]P$
([P.$?]\$|[]^]P|G\]\$|CG)$
!|((G.|P|\.)\$|[^?]P|CG)$
^[(!P]|G..$|]..\||[^?]P$
^.{3,23}[.-~]..\$$|[^P?][PG]$
^..(.[!G)(3w^]|.{7}$|$)|\$\?
\.\)|P[.$?]|w\^|^[^|C\\]*$|^P
^..(.[!)3G^w]|$)|\^.{7}$|G\)
\?[^w$]*\$$|[]^C]\w+$|w\^|\|..\)
\w.\)|\?[^-$]*\$$|[]^C]\w$|w[+^]
[]^C]\w$|\w.\)|-\$|w[+^]|\?[^w$]*\$$

И потерпите неудачу на этих строках:

[PPCG]
^[P\^]
[^\]]$
^\^?P
[^?][PG]$|<|PG
^[^\\|]*(\\\\)+[^\\|]*[^\]]$
^(.{,4}|.{9}|.{16,19}|.{5}P)$
^[^?]*[PG]$|[?$].*\$$
^[^[]P|]P|(G]|[.])\$$
\..$|!|\|G|^[\^P]P|P\^|G.\$$
...\^.P|^!|G]\$$|w|<!|^\^?P
([^\\}<]{3}|][^]]|^).?[$PG]$
^(..[^^].{4,22}\$|[^?]+\w)$|2
^(..[^^].{4,22}\$|[^?]+\w)$|~
^..(.[!()3G^w]|.{7}$|$)|G\\
[[?C(].[-!)|w]|^P|^[^C|\\]*$
[?[CP(].[-<)|w]|^P|^[^C|\\]*$
^..(.{7}$|.[3Gw!^)]|$)|G.?.?\)
^...[3w!G)]|^[^\\C|]*$|G.?.?\)
^[^C\\|]+$|G.\)|\.\)|w\^|^P|\...?]
^P|!.3|w\^|^[^C\\|]+$|\.[)$-](?!.!)
\?[^$w]*\$$|[]C^]\w$|w.]|\w.\)
\$..\\|\?[^w$]*\$$|w\^|[]^C]\w$
[]^C]\w$|\w.\)|w[[+^]|\?[^w$]*\$$
\?[^w$]*\$$|^P|\w.\)|w.?\+|w\^|[^?P]P$

Правильность проверена.
Мартин Эндер,

Моя программа пытается найти ответ длиной менее 45 символов ...
Vi.

@Vi. Ну, я могу сказать, что решение 38 существует по крайней мере, но, конечно, было бы интересно, если кому-то удастся стать ниже :)
Sp3000

11

28. Питон вкус - 29

\.\)|P[.$?]|w\^|^[^|C\\]*$|^P

Проверено на Regex101

Было сделано много поворотов - # 4 в наборе проходов, вероятно, самая большая боль, так как это подстрока регулярного выражения в наборе сбоев, а также разделяет суффикс с другим регулярным выражением в наборе сбоев.

Следующий ответ должен соответствовать следующим строкам:

PPCG
^P
^[P^]P
[^?][PG]$
(?<!\\..)(?!]).$
^[\w^]*$|!|]P|G]\$$
!|[^?]P(CG|G..)?$
[^])]\$|^\^?P|P.\].$
([.$?]|G\])\$$|^\^?P|\]P$
([P.$?]\$|[]^]P|G\]\$|CG)$
!|((G.|P|\.)\$|[^?]P|CG)$
^[(!P]|G..$|]..\||[^?]P$
^.{3,23}[.-~]..\$$|[^P?][PG]$
^..(.[!G)(3w^]|.{7}$|$)|\$\?
\.\)|P[.$?]|w\^|^[^|C\\]*$|^P

И потерпите неудачу на этих строках:

[PPCG]
^[P\^]
[^\]]$
^\^?P
[^?][PG]$|<|PG
^[^\\|]*(\\\\)+[^\\|]*[^\]]$
^(.{,4}|.{9}|.{16,19}|.{5}P)$
^[^?]*[PG]$|[?$].*\$$
^[^[]P|]P|(G]|[.])\$$
\..$|!|\|G|^[\^P]P|P\^|G.\$$
...\^.P|^!|G]\$$|w|<!|^\^?P
([^\\}<]{3}|][^]]|^).?[$PG]$
^(..[^^].{4,22}\$|[^?]+\w)$|2
^(..[^^].{4,22}\$|[^?]+\w)$|~
^..(.[!()3G^w]|.{7}$|$)|G\\

Правильность проверена.
Мартин Эндер

9

24 - вкус питона - 29

^(..[^^].{4,22}\$|[^?]+\w)$|2

Проверено здесь

Следующий ответ должен соответствовать следующим строкам:

PPCG
^P
^[P^]P
[^?][PG]$
(?<!\\..)(?!]).$
^[\w^]*$|!|]P|G]\$$
!|[^?]P(CG|G..)?$
[^])]\$|^\^?P|P.\].$
([.$?]|G\])\$$|^\^?P|\]P$
([P.$?]\$|[]^]P|G\]\$|CG)$
!|((G.|P|\.)\$|[^?]P|CG)$
^[(!P]|G..$|]..\||[^?]P$
^.{3,23}[.-~]..\$$|[^P?][PG]$

И потерпите неудачу на этих строках:

[PPCG]
^[P\^]
[^\]]$
^\^?P
[^?][PG]$|<|PG
^[^\\|]*(\\\\)+[^\\|]*[^\]]$
^(.{,4}|.{9}|.{16,19}|.{5}P)$
^[^?]*[PG]$|[?$].*\$$
^[^[]P|]P|(G]|[.])\$$
\..$|!|\|G|^[\^P]P|P\^|G.\$$
...\^.P|^!|G]\$$|w|<!|^\^?P
([^\\}<]{3}|][^]]|^).?[$PG]$
^(..[^^].{4,22}\$|[^?]+\w)$|2

1
Правильность проверена.
feersum

8

10. Питон вкус - 19

^[\w^]*$|!|]P|G]\$$

Проверено на Regex101 .

Следующий ответ должен соответствовать следующим строкам:

PPCG
^P
^[P^]P
[^?][PG]$
(?<!\\..)(?!]).$
^[\w^]*$|!|]P|G]\$$

И потерпите неудачу на этих строках:

[PPCG]
^[P\^]
[^\]]$
^\^?P
[^?][PG]$|<|PG
^[^\\|]*(\\\\)*[^\\|]*[^\]]$

Правильность проверена.
FryAmTheEggman

8

8. Емкость ECMAScript - 14 байт

[^?][PG]$|<|PG

демонстрация

Следующий ответ должен соответствовать следующим строкам:

PPCG
^P
^[P^]P
[^?][PG]$
(?<!\\..)(?!]).$

И потерпите неудачу на этих строках:

[PPCG]
^[P\^]
[^\]]$
^\^?P
[^?][PG]$|<|PG

Правильность проверена.
FryAmTheEggman

Исправлена ​​демонстрационная ссылка.
Мартин Эндер,

@FryAmTheEggman Скрипт делает читать комментарии, но только смотрит на «правильность проверяется» как к югу строки ( без учета регистра).
Мартин Эндер

@ MartinBüttner Спасибо, приятно знать.
FryAmTheEggman

3
+1 за единоличное выполнение этого задания в 10 раз сложнее
Sp3000


7

9. Вкус Python - 28

^[^\\|]*(\\\\)*[^\\|]*[^\]]$

Проверено на Regex101

Следующий ответ должен соответствовать следующим строкам:

PPCG
^P
^[P^]P
[^?][PG]$
(?<!\\..)(?!]).$

И потерпите неудачу на этих строках:

[PPCG]
^[P\^]
[^\]]$
^\^?P
[^?][PG]$|<|PG
^[^\\|]*(\\\\)*[^\\|]*[^\]]$

Я также обнаружил, что это не работает минуту назад. Для соответствия требуется две обратные косые черты подряд, поэтому я не думаю, что флаг может его сохранить.
feersum

Упс .... Должно было быть * вместо +. Я отредактировал свой ответ
ndc5057

Корректность проверена.
FryAmTheEggman

7

23. PCRE ароматизатор - 28

([^\\}<]{3}|][^]]|^).?[$PG]$

Проверено на Regex101.

Следующий ответ должен соответствовать следующим строкам:

PPCG
^P
^[P^]P
[^?][PG]$
(?<!\\..)(?!]).$
^[\w^]*$|!|]P|G]\$$
!|[^?]P(CG|G..)?$
[^])]\$|^\^?P|P.\].$
([.$?]|G\])\$$|^\^?P|\]P$
([P.$?]\$|[]^]P|G\]\$|CG)$
!|((G.|P|\.)\$|[^?]P|CG)$
^[(!P]|G..$|]..\||[^?]P$
^.{3,23}[.-~]..\$$|[^P?][PG]$

И потерпите неудачу на этих строках:

[PPCG]
^[P\^]
[^\]]$
^\^?P
[^?][PG]$|<|PG
^[^\\|]*(\\\\)+[^\\|]*[^\]]$
^(.{,4}|.{9}|.{16,19}|.{5}P)$
^[^?]*[PG]$|[?$].*\$$
^[^[]P|]P|(G]|[.])\$$
\..$|!|\|G|^[\^P]P|P\^|G.\$$
...\^.P|^!|G]\$$|w|<!|^\^?P
([^\\}<]{3}|][^]]|^).?[$PG]$

Что делает [^]?
feersum

@feersum В большинстве разновидностей, a ]как первый элемент класса символов (после необязательного отрицания), является просто ]внутри класса символов и не закрывается (потому что пустые классы символов немного бессмысленны). Так что [^]]соответствует что угодно, но ]. Заметным исключением является ECMAScript, который допускает пустые классы символов. В этом случае []ничего не совпадает, он действует как (?!)и [^]совпадает с любым символом, что удобно, потому что ECMAScript не имеет sмодификатора и [\s\S]является трудной для ввода чтения.
Мартин Эндер

Правильность проверена.
Мартин Эндер

7

11. Питон - 29

^(.{,4}|.{9}|.{16,19}|.{5}P)$

► Тест на RegexPlanet

Почти все неверные ответы имеют разную длину, чем все действительные. Это регулярное выражение использует это.

Следующий ответ должен соответствовать следующим строкам:

PPCG
^P
^[P^]P
[^?][PG]$
(?<!\\..)(?!]).$
^[\w^]*$|!|]P|G]\$$

И потерпите неудачу на этих строках:

[PPCG]
^[P\^]
[^\]]$
^\^?P
[^?][PG]$|<|PG
^[^\\|]*(\\\\)+[^\\|]*[^\]]$
^(.{,4}|.{9}|.{16,19}|.{5}P)$

Правильность проверена.
feersum

7

29. PCRE ароматизатор - 28

^..(.[!)3G^w]|$)|\^.{7}$|G\)

Проверено на Regex101

Этот ответ все еще работает ...

Следующий ответ должен соответствовать следующим строкам:

PPCG
^P
^[P^]P
[^?][PG]$
(?<!\\..)(?!]).$
^[\w^]*$|!|]P|G]\$$
!|[^?]P(CG|G..)?$
[^])]\$|^\^?P|P.\].$
([.$?]|G\])\$$|^\^?P|\]P$
([P.$?]\$|[]^]P|G\]\$|CG)$
!|((G.|P|\.)\$|[^?]P|CG)$
^[(!P]|G..$|]..\||[^?]P$
^.{3,23}[.-~]..\$$|[^P?][PG]$
^..(.[!G)(3w^]|.{7}$|$)|\$\?
\.\)|P[.$?]|w\^|^[^|C\\]*$|^P
^..(.[!)3G^w]|$)|\^.{7}$|G\)

И потерпите неудачу на этих строках:

[PPCG]
^[P\^]
[^\]]$
^\^?P
[^?][PG]$|<|PG
^[^\\|]*(\\\\)+[^\\|]*[^\]]$
^(.{,4}|.{9}|.{16,19}|.{5}P)$
^[^?]*[PG]$|[?$].*\$$
^[^[]P|]P|(G]|[.])\$$
\..$|!|\|G|^[\^P]P|P\^|G.\$$
...\^.P|^!|G]\$$|w|<!|^\^?P
([^\\}<]{3}|][^]]|^).?[$PG]$
^(..[^^].{4,22}\$|[^?]+\w)$|2
^(..[^^].{4,22}\$|[^?]+\w)$|~
^..(.[!()3G^w]|.{7}$|$)|G\\

Правильность проверена.
Мартин Эндер

1
Ницца! Запрет на перестановки, это именно то, что у меня было
Sp3000

Я пытался вычислить это с использованием генетического алгоритма, но он выдал регулярное выражение только из 30 символов ... Теперь запустим его, чтобы получить следующий ответ. Текущий результат - 32 символа.
Ви.

@Vi Генетический алгоритм, а у вас есть интересные идеи: P
Sp3000

@ Sp3000, сейчас 30 символов ... Но прибыл еще один ответчик, поэтому нужно перезагрузить.
Ви.

6

31. Вкус Perl - 29

[?[CP(].[-<)|w]|^P|^[^C|\\]*$

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

Следующий ответ должен соответствовать:

PPCG
^P
^[P^]P
[^?][PG]$
(?<!\\..)(?!]).$
^[\w^]*$|!|]P|G]\$$
!|[^?]P(CG|G..)?$
[^])]\$|^\^?P|P.\].$
([.$?]|G\])\$$|^\^?P|\]P$
([P.$?]\$|[]^]P|G\]\$|CG)$
!|((G.|P|\.)\$|[^?]P|CG)$
^[(!P]|G..$|]..\||[^?]P$
^.{3,23}[.-~]..\$$|[^P?][PG]$
^..(.[!G)(3w^]|.{7}$|$)|\$\?
\.\)|P[.$?]|w\^|^[^|C\\]*$|^P
^..(.[!)3G^w]|$)|\^.{7}$|G\)

и потерпеть неудачу:

[PPCG]
^[P\^]
[^\]]$
^\^?P
[^?][PG]$|<|PG
^[^\\|]*(\\\\)+[^\\|]*[^\]]$
^(.{,4}|.{9}|.{16,19}|.{5}P)$
^[^?]*[PG]$|[?$].*\$$
^[^[]P|]P|(G]|[.])\$$
\..$|!|\|G|^[\^P]P|P\^|G.\$$
...\^.P|^!|G]\$$|w|<!|^\^?P
([^\\}<]{3}|][^]]|^).?[$PG]$
^(..[^^].{4,22}\$|[^?]+\w)$|2
^(..[^^].{4,22}\$|[^?]+\w)$|~
^..(.[!()3G^w]|.{7}$|$)|G\\
[[?C(].[-!)|w]|^P|^[^C|\\]*$
[?[CP(].[-<)|w]|^P|^[^C|\\]*$

Правильность проверена.
Мартин Эндер

Ахаха, хорошо - вы использовали предыдущие ответы как семена для населения или они просто выглядели как предыдущие?
Sp3000

Проходные и неудачные строки используются в качестве начальных строительных блоков. Они были забанены через некоторое время из-за местных минимумов. Вы можете увидеть, как это происходит в журнале программы: число в скобках после «metric =» - это показатель того, насколько быстро мы продвигаемся вперед. Это долго долго, мы забаним текущие ответы и сбросим.
Ви.

(Между тем, 31-символьный кандидат на следующий ответ уже найден)
Vi.

О, предел увеличен? Это не 29? Таким образом, это не скоро закончится ... Хотя главная задача - найти последнее, окончательное регулярное выражение.
Ви.

6

32. PCRE - 30 байт

^..(.{7}$|.[3Gw!^)]|$)|G.?.?\)

Проверено на Regex101

Следующий ответ должен соответствовать следующим строкам :

PPCG
^P
^[P^]P
[^?][PG]$
(?<!\\..)(?!]).$
^[\w^]*$|!|]P|G]\$$
!|[^?]P(CG|G..)?$
[^])]\$|^\^?P|P.\].$
([.$?]|G\])\$$|^\^?P|\]P$
([P.$?]\$|[]^]P|G\]\$|CG)$
!|((G.|P|\.)\$|[^?]P|CG)$
^[(!P]|G..$|]..\||[^?]P$
^.{3,23}[.-~]..\$$|[^P?][PG]$
^..(.[!G)(3w^]|.{7}$|$)|\$\?
\.\)|P[.$?]|w\^|^[^|C\\]*$|^P
^..(.[!)3G^w]|$)|\^.{7}$|G\)

И потерпите неудачу на этих строках :

[PPCG]
^[P\^]
[^\]]$
^\^?P
[^?][PG]$|<|PG
^[^\\|]*(\\\\)+[^\\|]*[^\]]$
^(.{,4}|.{9}|.{16,19}|.{5}P)$
^[^?]*[PG]$|[?$].*\$$
^[^[]P|]P|(G]|[.])\$$
\..$|!|\|G|^[\^P]P|P\^|G.\$$
...\^.P|^!|G]\$$|w|<!|^\^?P
([^\\}<]{3}|][^]]|^).?[$PG]$
^(..[^^].{4,22}\$|[^?]+\w)$|2
^(..[^^].{4,22}\$|[^?]+\w)$|~
^..(.[!()3G^w]|.{7}$|$)|G\\
[[?C(].[-!)|w]|^P|^[^C|\\]*$
[?[CP(].[-<)|w]|^P|^[^C|\\]*$
^..(.{7}$|.[3Gw!^)]|$)|G.?.?\)

1
Правильность проверена.
Мартин Эндер,

Почему он добавлен в список «сбой»? Уже само по себе не получается, поэтому может служить следующим ответом без изменений. Я предполагаю, что для каждого ответа нет выбора, к какому списку он должен быть добавлен.
Ви.

3
@Vi. Я думаю, что HWND чувствует себя хорошо сегодня
Sp3000

Я сделаю это тяжелее, поскольку это продолжает идти.
Hwnd

5

1. Емкость ECMAScript - 2 байта

^P

Проверьте это на Regex101.

Начальный совпадающий набор PPCGи неудачный набор [PPCG]. Таким образом, это регулярное выражение просто проверяет , что строка начинается с P.

Следующий ответ должен соответствовать следующим строкам:

PPCG
^P

И потерпите неудачу на этих строках:

[PPCG]

3
Правильность проверена.
бета-распад


5

7. Питон вкус - 16

(?<!\\..)(?!]).$

Проверено на Regex101

Нужно добавить \ в список матчей :)

Следующий ответ должен соответствовать следующим строкам:

PPCG
^P
^[P^]P
[^?][PG]$
(?<!\\..)(?!]).$

И потерпите неудачу на этих строках:

[PPCG]
^[P\^]
[^\]]$
^\^?P

Правильность проверена.
NinjaBearMonkey

Это ... это обманчиво.
wchargin

@WChargin Спасибо :) Вы должны проверить некоторые из ответов user23013 или n̴̖̋h̷͉̃a̷̭̿h̸̡̅ẗ̵̨́d̷̰̀ĥ̷̳; некоторые из них довольно «коварны»;)
FryAmTheEggman

5

12. Вкус ECMAScript - 17

!|[^?]P(CG|G..)?$

Проверьте это здесь .

Следующий ответ должен соответствовать следующим строкам:

PPCG
^P
^[P^]P
[^?][PG]$
(?<!\\..)(?!]).$
^[\w^]*$|!|]P|G]\$$
!|[^?]P(CG|G..)?$

И потерпите неудачу на этих строках:

[PPCG]
^[P\^]
[^\]]$
^\^?P
[^?][PG]$|<|PG
^[^\\|]*(\\\\)+[^\\|]*[^\]]$
^(.{,4}|.{9}|.{16,19}|.{5}P)$

Правильность проверена.
Мартин Эндер

5

22. PCRE Flavor - 29 байт

Поскольку исходный № 22 не изменяется в течение 1 часа, я предполагаю, что он стал недействительным.

^.{3,23}[.-~]..\$$|[^P?][PG]$

демонстрация

Следующий ответ должен соответствовать следующим строкам:

PPCG
^P
^[P^]P
[^?][PG]$
(?<!\\..)(?!]).$
^[\w^]*$|!|]P|G]\$$
!|[^?]P(CG|G..)?$
[^])]\$|^\^?P|P.\].$
([.$?]|G\])\$$|^\^?P|\]P$
([P.$?]\$|[]^]P|G\]\$|CG)$
!|((G.|P|\.)\$|[^?]P|CG)$
^[(!P]|G..$|]..\||[^?]P$
^.{3,23}[.-~]..\$$|[^P?][PG]$

И потерпите неудачу на этих строках:

[PPCG]
^[P\^]
[^\]]$
^\^?P
[^?][PG]$|<|PG
^[^\\|]*(\\\\)+[^\\|]*[^\]]$
^(.{,4}|.{9}|.{16,19}|.{5}P)$
^[^?]*[PG]$|[?$].*\$$
^[^[]P|]P|(G]|[.])\$$
\..$|!|\|G|^[\^P]P|P\^|G.\$$
...\^.P|^!|G]\$$|w|<!|^\^?P

1
Правильность проверена. (И да, все верно, предыдущие 22 теперь недействительны.)
Мартин Эндер,

5

26. Питон вкус - 28

^..(.[!G)(3w^]|.{7}$|$)|\$\?

Тест на Regex101

Следующий ответ должен соответствовать следующим строкам:

PPCG
^P
^[P^]P
[^?][PG]$
(?<!\\..)(?!]).$
^[\w^]*$|!|]P|G]\$$
!|[^?]P(CG|G..)?$
[^])]\$|^\^?P|P.\].$
([.$?]|G\])\$$|^\^?P|\]P$
([P.$?]\$|[]^]P|G\]\$|CG)$
!|((G.|P|\.)\$|[^?]P|CG)$
^[(!P]|G..$|]..\||[^?]P$
^.{3,23}[.-~]..\$$|[^P?][PG]$
^..(.[!G)(3w^]|.{7}$|$)|\$\?

И потерпите неудачу на этих строках:

[PPCG]
^[P\^]
[^\]]$
^\^?P
[^?][PG]$|<|PG
^[^\\|]*(\\\\)+[^\\|]*[^\]]$
^(.{,4}|.{9}|.{16,19}|.{5}P)$
^[^?]*[PG]$|[?$].*\$$
^[^[]P|]P|(G]|[.])\$$
\..$|!|\|G|^[\^P]P|P\^|G.\$$
...\^.P|^!|G]\$$|w|<!|^\^?P
([^\\}<]{3}|][^]]|^).?[$PG]$
^(..[^^].{4,22}\$|[^?]+\w)$|2
^(..[^^].{4,22}\$|[^?]+\w)$|~

Правильность проверена.
Мартин Эндер

5

30. Питон вкус - 28

[[?C(].[-!)|w]|^P|^[^C|\\]*$

Проверено на Regex101

Когда есть желание ...

Следующий ответ должен соответствовать следующим строкам:

PPCG
^P
^[P^]P
[^?][PG]$
(?<!\\..)(?!]).$
^[\w^]*$|!|]P|G]\$$
!|[^?]P(CG|G..)?$
[^])]\$|^\^?P|P.\].$
([.$?]|G\])\$$|^\^?P|\]P$
([P.$?]\$|[]^]P|G\]\$|CG)$
!|((G.|P|\.)\$|[^?]P|CG)$
^[(!P]|G..$|]..\||[^?]P$
^.{3,23}[.-~]..\$$|[^P?][PG]$
^..(.[!G)(3w^]|.{7}$|$)|\$\?
\.\)|P[.$?]|w\^|^[^|C\\]*$|^P
^..(.[!)3G^w]|$)|\^.{7}$|G\)

И потерпите неудачу на этих строках:

[PPCG]
^[P\^]
[^\]]$
^\^?P
[^?][PG]$|<|PG
^[^\\|]*(\\\\)+[^\\|]*[^\]]$
^(.{,4}|.{9}|.{16,19}|.{5}P)$
^[^?]*[PG]$|[?$].*\$$
^[^[]P|]P|(G]|[.])\$$
\..$|!|\|G|^[\^P]P|P\^|G.\$$
...\^.P|^!|G]\$$|w|<!|^\^?P
([^\\}<]{3}|][^]]|^).?[$PG]$
^(..[^^].{4,22}\$|[^?]+\w)$|2
^(..[^^].{4,22}\$|[^?]+\w)$|~
^..(.[!()3G^w]|.{7}$|$)|G\\
[[?C(].[-!)|w]|^P|^[^C|\\]*$

Правильность проверена.
jimmy23013

5

37. Вкус Perl - 30

\?[^$w]*\$$|[]C^]\w$|w.]|\w.\)

Представление на Regex101 .

Решение было получено по той же программе, что и раньше. Программа также напечатала 29-символьное решение \?[^$w]*\$|[]^C]\w)$|w.]|\w.\, я не знаю почему, так как это выглядит как искаженное регулярное выражение ...

Следующий ответ должен соответствовать следующим строкам:

PPCG
^P
^[P^]P
[^?][PG]$
(?<!\\..)(?!]).$
^[\w^]*$|!|]P|G]\$$
!|[^?]P(CG|G..)?$
[^])]\$|^\^?P|P.\].$
([.$?]|G\])\$$|^\^?P|\]P$
([P.$?]\$|[]^]P|G\]\$|CG)$
!|((G.|P|\.)\$|[^?]P|CG)$
^[(!P]|G..$|]..\||[^?]P$
^.{3,23}[.-~]..\$$|[^P?][PG]$
^..(.[!G)(3w^]|.{7}$|$)|\$\?
\.\)|P[.$?]|w\^|^[^|C\\]*$|^P
^..(.[!)3G^w]|$)|\^.{7}$|G\)
\?[^w$]*\$$|[]^C]\w+$|w\^|\|..\)

И потерпите неудачу на этих строках:

[PPCG]
^[P\^]
[^\]]$
^\^?P
[^?][PG]$|<|PG
^[^\\|]*(\\\\)+[^\\|]*[^\]]$
^(.{,4}|.{9}|.{16,19}|.{5}P)$
^[^?]*[PG]$|[?$].*\$$
^[^[]P|]P|(G]|[.])\$$
\..$|!|\|G|^[\^P]P|P\^|G.\$$
...\^.P|^!|G]\$$|w|<!|^\^?P
([^\\}<]{3}|][^]]|^).?[$PG]$
^(..[^^].{4,22}\$|[^?]+\w)$|2
^(..[^^].{4,22}\$|[^?]+\w)$|~
^..(.[!()3G^w]|.{7}$|$)|G\\
[[?C(].[-!)|w]|^P|^[^C|\\]*$
[?[CP(].[-<)|w]|^P|^[^C|\\]*$
^..(.{7}$|.[3Gw!^)]|$)|G.?.?\)
^...[3w!G)]|^[^\\C|]*$|G.?.?\)
^[^C\\|]+$|G.\)|\.\)|w\^|^P|\...?]
^P|!.3|w\^|^[^C\\|]+$|\.[)$-](?!.!)
\?[^$w]*\$$|[]C^]\w$|w.]|\w.\)

Правильность проверена.
Мартин Эндер

Ахаха, я очень раздражен, я не получил это после того, как
зашел

5

40. PCRE - 33 байта

[]^C]\w$|\w.\)|w[[+^]|\?[^w$]*\$$

Проверено на Regex101

Следующий ответ должен соответствовать следующим строкам :

PPCG
^P
^[P^]P
[^?][PG]$
(?<!\\..)(?!]).$
^[\w^]*$|!|]P|G]\$$
!|[^?]P(CG|G..)?$
[^])]\$|^\^?P|P.\].$
([.$?]|G\])\$$|^\^?P|\]P$
([P.$?]\$|[]^]P|G\]\$|CG)$
!|((G.|P|\.)\$|[^?]P|CG)$
^[(!P]|G..$|]..\||[^?]P$
^.{3,23}[.-~]..\$$|[^P?][PG]$
^..(.[!G)(3w^]|.{7}$|$)|\$\?
\.\)|P[.$?]|w\^|^[^|C\\]*$|^P
^..(.[!)3G^w]|$)|\^.{7}$|G\)
\?[^w$]*\$$|[]^C]\w+$|w\^|\|..\)
\w.\)|\?[^-$]*\$$|[]^C]\w$|w[+^]

И потерпите неудачу на этих строках :

[PPCG]
^[P\^]
[^\]]$
^\^?P
[^?][PG]$|<|PG
^[^\\|]*(\\\\)+[^\\|]*[^\]]$
^(.{,4}|.{9}|.{16,19}|.{5}P)$
^[^?]*[PG]$|[?$].*\$$
^[^[]P|]P|(G]|[.])\$$
\..$|!|\|G|^[\^P]P|P\^|G.\$$
...\^.P|^!|G]\$$|w|<!|^\^?P
([^\\}<]{3}|][^]]|^).?[$PG]$
^(..[^^].{4,22}\$|[^?]+\w)$|2
^(..[^^].{4,22}\$|[^?]+\w)$|~
^..(.[!()3G^w]|.{7}$|$)|G\\
[[?C(].[-!)|w]|^P|^[^C|\\]*$
[?[CP(].[-<)|w]|^P|^[^C|\\]*$
^..(.{7}$|.[3Gw!^)]|$)|G.?.?\)
^...[3w!G)]|^[^\\C|]*$|G.?.?\)
^[^C\\|]+$|G.\)|\.\)|w\^|^P|\...?]
^P|!.3|w\^|^[^C\\|]+$|\.[)$-](?!.!)
\?[^$w]*\$$|[]C^]\w$|w.]|\w.\)
\$..\\|\?[^w$]*\$$|w\^|[]^C]\w$
[]^C]\w$|\w.\)|w[[+^]|\?[^w$]*\$$

Правильность проверена.
Ви.

1
У меня есть 35, но я не удовлетворен этим, поэтому я посмотрю, смогу ли я получить что-то более интересное
Sp3000

И у меня есть 3 варианта ответа из 32 символов, но вся задача стала немного скучной (особенно бухгалтерия представлений Regex101 и списков строк неудачи / прохода). Если кто-то хочет, я могу опубликовать ответ.
Ви.


4

5. Емкость ECMAScript - 6 байт

^[P^]P

Проверено на Regex101 .

Время немного оживить обстановку успеха.

Следующий ответ должен соответствовать следующим строкам:

PPCG
^P
^[P^]P

И потерпите неудачу на этих строках:

[PPCG]
^[P\^]
[^\]]$
^\^?P

Правильность проверена.
FryAmTheEggman

4

6. Емкость ECMAScript - 9 байт

[^?][PG]$

Проверено на Regex101 .

Следующий ответ должен соответствовать следующим строкам:

PPCG
^P
^[P^]P
[^?][PG]$

И потерпите неудачу на этих строках:

[PPCG]
^[P\^]
[^\]]$
^\^?P

1
Правильность проверена.
FireFly

4

14. PCRE ароматизатор - 25

([.$?]|G\])\$$|^\^?P|\]P$

Проверено на Regex101

Это становится довольно сложно.

Следующий ответ должен соответствовать следующим строкам:

PPCG
^P
^[P^]P
[^?][PG]$
(?<!\\..)(?!]).$
^[\w^]*$|!|]P|G]\$$
!|[^?]P(CG|G..)?$
[^])]\$|^\^?P|P.\].$
([.$?]|G\])\$$|^\^?P|\]P$

И потерпите неудачу на этих строках:

[PPCG]
^[P\^]
[^\]]$
^\^?P
[^?][PG]$|<|PG
^[^\\|]*(\\\\)+[^\\|]*[^\]]$
^(.{,4}|.{9}|.{16,19}|.{5}P)$

Правильность проверена.
Мартин Эндер

4

15. PCRE ароматизатор - 26

([P.$?]\$|[]^]P|G\]\$|CG)$

Проверено на Regex101

Следующий ответ должен соответствовать следующим строкам:

PPCG
^P
^[P^]P
[^?][PG]$
(?<!\\..)(?!]).$
^[\w^]*$|!|]P|G]\$$
!|[^?]P(CG|G..)?$
[^])]\$|^\^?P|P.\].$
([.$?]|G\])\$$|^\^?P|\]P$
([P.$?]\$|[]^]P|G\]\$|CG)$

И потерпите неудачу на этих строках:

[PPCG]
^[P\^]
[^\]]$
^\^?P
[^?][PG]$|<|PG
^[^\\|]*(\\\\)+[^\\|]*[^\]]$
^(.{,4}|.{9}|.{16,19}|.{5}P)$

1
Правильность проверена.
FireFly

4

16. PCRE ароматизатор - 21

^[^?]*[PG]$|[?$].*\$$

Проверено на Regex 101 .

Следующий ответ должен соответствовать следующим строкам:

PPCG
^P
^[P^]P
[^?][PG]$
(?<!\\..)(?!]).$
^[\w^]*$|!|]P|G]\$$
!|[^?]P(CG|G..)?$
[^])]\$|^\^?P|P.\].$
([.$?]|G\])\$$|^\^?P|\]P$
([P.$?]\$|[]^]P|G\]\$|CG)$

И потерпите неудачу на этих строках:

[PPCG]
^[P\^]
[^\]]$
^\^?P
[^?][PG]$|<|PG
^[^\\|]*(\\\\)+[^\\|]*[^\]]$
^(.{,4}|.{9}|.{16,19}|.{5}P)$
^[^?]*[PG]$|[?$].*\$$

Это не соответствует PPCG.
jimmy23013

@ user23013 исправлено
es1024

Правильность проверена.
jimmy23013

4

25. PCRE ароматизатор - 29

^(..[^^].{4,22}\$|[^?]+\w)$|~

Проверено здесь. (Тестовое регулярное выражение содержит дополнительное, \nчтобы убедиться, что ни одно совпадение не занимает несколько строк. Это не обязательно для сопоставления каждой отдельной строки.)

Это был низко висящий фрукт! :) Я должен поздравить plannapus, хотя это регулярное выражение удивительно элегантно для текущих тестовых наборов. Если вы хотите отозвать этот ответ, убедитесь, что вы также проголосовали за предыдущий!

Следующий ответ должен соответствовать следующим строкам:

PPCG
^P
^[P^]P
[^?][PG]$
(?<!\\..)(?!]).$
^[\w^]*$|!|]P|G]\$$
!|[^?]P(CG|G..)?$
[^])]\$|^\^?P|P.\].$
([.$?]|G\])\$$|^\^?P|\]P$
([P.$?]\$|[]^]P|G\]\$|CG)$
!|((G.|P|\.)\$|[^?]P|CG)$
^[(!P]|G..$|]..\||[^?]P$
^.{3,23}[.-~]..\$$|[^P?][PG]$

И потерпите неудачу на этих строках:

[PPCG]
^[P\^]
[^\]]$
^\^?P
[^?][PG]$|<|PG
^[^\\|]*(\\\\)+[^\\|]*[^\]]$
^(.{,4}|.{9}|.{16,19}|.{5}P)$
^[^?]*[PG]$|[?$].*\$$
^[^[]P|]P|(G]|[.])\$$
\..$|!|\|G|^[\^P]P|P\^|G.\$$
...\^.P|^!|G]\$$|w|<!|^\^?P
([^\\}<]{3}|][^]]|^).?[$PG]$
^(..[^^].{4,22}\$|[^?]+\w)$|2
^(..[^^].{4,22}\$|[^?]+\w)$|~

1
Правильность проверена.
feersum

4

35. PCRE - 35 байт

^P|!.3|w\^|^[^C\\|]+$|\.[)$-](?!.!)

Проверено на Regex101

Следующий ответ должен соответствовать следующим строкам :

PPCG
^P
^[P^]P
[^?][PG]$
(?<!\\..)(?!]).$
^[\w^]*$|!|]P|G]\$$
!|[^?]P(CG|G..)?$
[^])]\$|^\^?P|P.\].$
([.$?]|G\])\$$|^\^?P|\]P$
([P.$?]\$|[]^]P|G\]\$|CG)$
!|((G.|P|\.)\$|[^?]P|CG)$
^[(!P]|G..$|]..\||[^?]P$
^.{3,23}[.-~]..\$$|[^P?][PG]$
^..(.[!G)(3w^]|.{7}$|$)|\$\?
\.\)|P[.$?]|w\^|^[^|C\\]*$|^P
^..(.[!)3G^w]|$)|\^.{7}$|G\)

И потерпите неудачу на этих строках :

[PPCG]
^[P\^]
[^\]]$
^\^?P
[^?][PG]$|<|PG
^[^\\|]*(\\\\)+[^\\|]*[^\]]$
^(.{,4}|.{9}|.{16,19}|.{5}P)$
^[^?]*[PG]$|[?$].*\$$
^[^[]P|]P|(G]|[.])\$$
\..$|!|\|G|^[\^P]P|P\^|G.\$$
...\^.P|^!|G]\$$|w|<!|^\^?P
([^\\}<]{3}|][^]]|^).?[$PG]$
^(..[^^].{4,22}\$|[^?]+\w)$|2
^(..[^^].{4,22}\$|[^?]+\w)$|~
^..(.[!()3G^w]|.{7}$|$)|G\\
[[?C(].[-!)|w]|^P|^[^C|\\]*$
[?[CP(].[-<)|w]|^P|^[^C|\\]*$
^..(.{7}$|.[3Gw!^)]|$)|G.?.?\)
^...[3w!G)]|^[^\\C|]*$|G.?.?\)
^[^C\\|]+$|G.\)|\.\)|w\^|^P|\...?]
^P|!.3|w\^|^[^C\\|]+$|\.[)$-](?!.!)

Мой верификатор не показывает ошибок.
Ви.

Правильность проверена. (@Vi., Приборная панель ищет эту конкретную фразу.)
Мартин Эндер

Я хотя и использовал эту фразу, но не был уверен, хочу ли я сделать свой комментарий авторитетным.
Ви.

Мой другой ответ из 34 символов, упомянутый ранее, похоже, работает здесь. Жду 4 часа (или как то) ...
Ви.

Я не утруждаюсь взломом - я передаю его на компьютер. Может быть, написать бота для публикации ответов, используя StackExchange API? ..
Vi.

4

36. Вкус Python - 32

\?[^w$]*\$$|[]^C]\w+$|w\^|\|..\)

Проверено на Regex101

У меня было три готовых 32-байтовых регулярных выражения, и, к счастью, один из них все еще работает: D

Следующий ответ должен соответствовать следующим строкам:

PPCG
^P
^[P^]P
[^?][PG]$
(?<!\\..)(?!]).$
^[\w^]*$|!|]P|G]\$$
!|[^?]P(CG|G..)?$
[^])]\$|^\^?P|P.\].$
([.$?]|G\])\$$|^\^?P|\]P$
([P.$?]\$|[]^]P|G\]\$|CG)$
!|((G.|P|\.)\$|[^?]P|CG)$
^[(!P]|G..$|]..\||[^?]P$
^.{3,23}[.-~]..\$$|[^P?][PG]$
^..(.[!G)(3w^]|.{7}$|$)|\$\?
\.\)|P[.$?]|w\^|^[^|C\\]*$|^P
^..(.[!)3G^w]|$)|\^.{7}$|G\)
\?[^w$]*\$$|[]^C]\w+$|w\^|\|..\)

И потерпите неудачу на этих строках:

[PPCG]
^[P\^]
[^\]]$
^\^?P
[^?][PG]$|<|PG
^[^\\|]*(\\\\)+[^\\|]*[^\]]$
^(.{,4}|.{9}|.{16,19}|.{5}P)$
^[^?]*[PG]$|[?$].*\$$
^[^[]P|]P|(G]|[.])\$$
\..$|!|\|G|^[\^P]P|P\^|G.\$$
...\^.P|^!|G]\$$|w|<!|^\^?P
([^\\}<]{3}|][^]]|^).?[$PG]$
^(..[^^].{4,22}\$|[^?]+\w)$|2
^(..[^^].{4,22}\$|[^?]+\w)$|~
^..(.[!()3G^w]|.{7}$|$)|G\\
[[?C(].[-!)|w]|^P|^[^C|\\]*$
[?[CP(].[-<)|w]|^P|^[^C|\\]*$
^..(.{7}$|.[3Gw!^)]|$)|G.?.?\)
^...[3w!G)]|^[^\\C|]*$|G.?.?\)
^[^C\\|]+$|G.\)|\.\)|w\^|^P|\...?]
^P|!.3|w\^|^[^C\\|]+$|\.[)$-](?!.!)

1
Правильность проверена.
Мартин Эндер

Корректность как регулярное выражение Perl также проверяется.
Ви.

Будем надеяться, что вопрос будет неактивным до завтра, так как у меня есть ожидающий 30-символьный ответ на сообщение.
Ви.
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.