Різний вид Meta Regex Golf


42

Примітка: Наслідуючи попит населення, я трохи послабив правила:

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

У регекс-гольфі вам надають два набори рядків, і вам пропонується створити найкоротший регулярний вираз, який відповідає всім рядкам у першому наборі, але не відповідає всім рядкам у другому наборі.

Це ми будемо робити, але щоразу, коли хтось відповість, сам їх регулярний вираз буде доданий до одного з двох наборів рядків (за власним вибором). Тому існує чіткий порядок відповідей у ​​цьому виклику.

Переглянемо приклад:

  • Скажіть, я починаю це з 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та multiline модифікатори в тестері, ви можете протестувати всі рядки одразу, по одній у кожному рядку (ці модифікатори не враховуються до вашого розміру регулярних виразів, оскільки вони не потрібні в жодному окремому рядку).
  • Регекс не повинен бути порожнім.
  • Ваш регулярний вираз для відповіді 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, тому ви можете покращити загальний бал, надавши нову відповідь. Однак чим коротше кожне ваше подання, тим ефективніше ви можете знизити свою оцінку. Крім того, пізніші відповіді дозволяють досягти нижчого балу, хоча і довше, через зростання показника.

Панель приладів

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

Це відобразить поточний стан виклику - зокрема, якщо є суперечливі відповіді, якщо відповідь потрібно перевірити, або якщо наступну відповідь можна опублікувати.

Він також створює список усіх відповідей з оцінками, а також таблицю лідерів усіх користувачів. Будь ласка, дотримуйтесь формату виклику вище, щоб на інформаційній панелі можна було прочитати відповідні рядки з ваших відповідей. Інакше ви не можете бути включені до таблиці лідерів.

Будь ласка, дайте мені знати (в ідеалі в чаті ), якщо ви помітили будь-які помилки або маєте якісь ідеї, як можна покращити корисність інструменту.


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

2
Правила - це правила. Не змінюйте їх. Можливо, прикро, що розмістити ще одну відповідь неможливо, але це не виправдовує зміни правил.
Мартін Ендер

2
Дозволити додатковий байт кожні 10 відповідей. Відповідно, змінити рахунок відповідь на (M / (30 + N / 10)) ^ N . Це застосовуватиметься заднім числом, тому наступна відповідь може використовувати до 32 байт. Зміна балів не вплине на перші два місця в таблиці лідерів, але інші користувачі будуть дещо переміщені.
Мартін Ендер

8
Дозволити додатковий байт кожні 5 відповідей. Відповідно, змінити рахунок відповідь на (M / (30 + N / 5)) ^ N . Це застосовуватиметься заднім числом, тому наступна відповідь може використовувати до 35 байт. Зміна балів не вплине на перші два місця в таблиці лідерів, але інші користувачі будуть дещо переміщені.
Мартін Ендер

4
Ви люди дивні і кручені. Навіщо ти це робив собі? (Приємно читати, хоча: P)
Джо

Відповіді:


5

42. Аромат Пітона - 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 - аромат Python - 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. Аромат Пітона - 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 У більшості ароматів, ]як перший елемент класу символів (після необов'язкового заперечення), це просто ]внутрішній клас символів і не закривається (адже порожні класи символів трохи безглузді). Тож [^]]відповідає нічого, крім ]. Помітним винятком є ​​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 символу вже знайдений)
Ві.

О, ліміт збільшився? Це не так 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. аромат Python - 16

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

Тестовано на Regex101

Треба додати \ до списку матчів :)

Наступна відповідь має відповідати наступним рядкам:

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

І провалити ці рядки:

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

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

Це… це огидно.
wchargin

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

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 - 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. аромат Python - 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.\)

Правильність перевірена.
Мартін Ендер

Ага, я сильно роздратований, що цього не отримав після того, як зайшов у першій половині: P
Sp3000

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щоб переконатися, що відповідність не охоплює кілька рядків. Це не обов'язково для відповідності кожному окремому рядку.)

То був низько висячий плід! :) Мені потрібно привітати планнапус, цей регекс надзвичайно елегантний для нинішніх тестових наборів. Якщо ви хочете відхилити цю відповідь, переконайтесь, що ви також схвалили попередню!

Наступна відповідь має відповідати наступним рядкам:

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 години (чи так) ...
Vi.

Я не заважаю хакерствувати - делегую його на комп’ютер. Можливо, напишіть бота для розміщення відповідей за допомогою API StackExchange? ..
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.