Ваша задача здесь состоит в том, чтобы написать два регулярных выражения, каждое из которых соответствует другому, но не соответствует самому себе.
Оба регулярных выражения должны иметь такую форму:
/pattern/optional-flags
Это также форма, в которой они должны быть сопоставлены.
Самое короткое решение выигрывает. Длина решения считается как сумма символов в обоих регулярных выражениях, включая косые черты и флаги.
Используйте стандарт синтаксиса регулярных выражений по вашему выбору или укажите язык программирования, если это имеет значение.
Повеселись!
code-golf
regular-expression
GOTO 0
источник
источник
/a/
матчabc
?/^%/
и%^/%
)Ответы:
PRCE с модификатором A: 9 символов
Хотя это вариант
/modifier$/
ответа Doorknob , я думаю, что это нововведение квалифицирует его как отдельный ответ, а не как комментарий к нему: модификатор выполняет двойную функцию. Вместо того, чтобы быть там исключительно для другого регулярного выражения, он привязывает.Первое регулярное выражение соответствует любой строке, заканчивающейся литералом
A
. Второе регулярное выражение соответствует любой строке, второй символ которой является литераломA
, используя флаг привязки к началу.Онлайн демо
источник
//
соответствует чему-либо, это означает, что каждый из регулярных выражений может иметь не более трех символов без разделителя. При использовании PHP PCRE существует 73339 несоответствующих регулярных выражений в этом ограничении, и возникает исчерпывающая проверка пар, длина которых меньше 10 (порядка 32Mpairs, а не 5.7Gpairs, поскольку большинство из них составляют 5 символов, включая разделители). это решение и никаких других. Поэтому я утверждаю, что это оптимально для этого конкретного движка регулярных выражений.4 + 6 = 10 баллов
Первое регулярное выражение:
Второе регулярное выражение:
Ура за злоупотребление флагом! :-П
Первый соответствует всему, что заканчивается
i
(следовательно, любому регулярному выражению сi
флагом).Второй соответствует чему-либо со вторым символом
i
.Альтернативная версия:
/i$/g
а/g$/i
.источник
/x.$/
и/^.x/
для кучки х/i$/
и/\/$/i
/i$/
и/i\$/i
JavaScript регулярные выражения, оценка: 18
Первое регулярное выражение:
Второе регулярное выражение:
Тест JavaScript:
Тест онлайн: http://jsfiddle.net/99Sx6/
источник
Ruby Regex, 15
Регулярные выражения:
Просто считать персонажей ...
Онлайн версия
источник
4 + 6 = 10
Первое регулярное выражение:
Второе регулярное выражение:
i$
соответствует чему-то, что заканчиваетсяi
вторым./$
соответствует чему-то, что заканчивается/
первым.источник
5 + 5 = 10
Regex # 1:
Регулярное выражение № 2:
В
0
s в обоих регулярных выражений может быть заменен любым не-метасимволом и регулярное выражение по- прежнему работает.0.$
соответствует любому, чей второй последний символ является0
, и^.0
соответствует любому, чей второй символ0
.источник
/
es. Альтернатива - двойная оценка комментария к ответу Doorknob.JavaScript регулярные выражения, оценка: 13
Первое регулярное выражение:
Второе регулярное выражение:
Объяснение: первое регулярное выражение соответствует всему, что содержит цифру, а второе регулярное выражение соответствует всему, что не содержит a
0
.Тест JavaScript:
Тест онлайн: http://jsfiddle.net/5VYjC/1/
источник
12 символов ;) JS регулярное выражение
источник
Оценка: 5 + 5 = 10
Мне потребовалось полчаса, чтобы понять, но я действительно счастлив, что сделал :)
1-й это:
/j.$/
2-й это:
/^.j/
1-й соответствует
j
совпадению во второй позиции, начиная справа. 2-й соответствуетj
событию во второй позиции, начиная слева.Я не проверял, но я думаю, что эти RegExs действительно универсальны, так как их
j
можно заменить любым\w
символом (или больше?) И все равно должен работать нормально.PS Это должно (надеюсь) работать на любом языке. Хотя, если это не работает в любом, пожалуйста, сообщите в комментариях ниже :)
Тестовое задание
источник
PCRE с использованием модификатора x: 11 символов
Первая соответствует любой строке с пробелом, но не содержит пробелов. Второй содержит пробелы, но он игнорируется из-за
x
модификатора; это соответствует любой строке, чей предпоследний символs
.PCRE и другие движки, использующие классы персонажей: 11 символов
Первая соответствует любой строке с символом «слово» (буква, цифра, подчеркивание), за которым следует литерал
w
; вторая соответствует любой строке с несловесным символом, за которым следует литералw
.PCRE и другие движки, использующие классы символов и привязку границ слов: 11 символов
Первый соответствует любой строке с двумя последовательными символами «слова»; вторая любая строка с несловесным символом или началом строки, за которой следует литерал
w
.источник
ECMAScript (11 байт):
Другие двигатели REGEXP (14 байтов):
Первый соответствует \ d [..] или \ 1d [..].
Вторая соответствует любой строке с номером.
РЕДАКТИРОВАТЬ:
Первоначально этот ответ был опубликован как совместимый со всеми двигателями, но оказалось, что он ошибочен.
Возникла проблема со ссылками на группы захвата (например, в php).
источник
\1
не интерпретируется как обратная ссылка?"/^\1?d/"
вас будут проблемы, но если вы это сделаете'/^\1?d/'
, то это нормально. Кавычки имеют огромное значение, когда код интерпретируется.