Sua tarefa aqui é escrever duas expressões regulares, cada uma correspondendo à outra, mas não corresponde a si mesma.
Ambas as expressões regulares devem ter este formato:
/pattern/optional-flags
Essa também é a forma na qual eles devem ser correspondidos.
A solução mais curta vence. O comprimento da solução é contado como a soma dos caracteres nas duas expressões regulares, incluindo barras e sinalizadores.
Use um padrão de sintaxe regex de sua escolha ou especifique uma linguagem de programação, quando isso fizer diferença.
Diverta-se!
code-golf
regular-expression
GOTO 0
fonte
fonte
/a/
correspondeabc
?/^%/
e%^/%
)Respostas:
PRCE com o modificador A: 9 caracteres
Embora essa seja uma variante da
/modifier$/
resposta de Maçaneta da porta , acho que essa inovação a qualifica como uma resposta separada, e não como um comentário sobre ele: o modificador tem dupla função. Em vez de estar lá apenas para a outra regex corresponder, ela ancora.O primeiro regex corresponde a qualquer sequência que termina em um literal
A
. O segundo regex corresponde a qualquer sequência cujo segundo caractere é literalA
, usando um sinalizador de âncora para iniciar.Demonstração online
fonte
//
corresponde a qualquer coisa que significa que cada uma das expressões regulares pode ter no máximo três caracteres não-delimitadores. Usando o PHP PCRE, existem 73339 regexes não correspondentes dentro dessa restrição, e a verificação exaustiva dos pares cujo comprimento é menor que 10 (da ordem de 32Mpairs em vez de 5.7Gpairs porque a maioria deles tem 5 caracteres incluindo delimitadores) aparece esta solução e nenhuma outra. Por isso, afirmo que é ideal para esse mecanismo regex específico.4 + 6 = pontuação 10
Primeiro regex:
Segundo regex:
Viva por abuso de bandeira! :-P
O primeiro corresponde a qualquer coisa que termine com
i
(portanto, qualquer regex com oi
sinalizador).O segundo corresponde a qualquer coisa com um segundo caractere de
i
.Versão alternativa:
/i$/g
e/g$/i
.fonte
/x.$/
e/^.x/
para um monte de x/i$/
e/\/$/i
/i$/
e/i\$/i
Regexes JavaScript, pontuação: 18
Primeiro regex:
Segundo regex:
Teste de JavaScript:
Teste online: http://jsfiddle.net/99Sx6/
fonte
Regex em rubi, 15
Expressões regulares:
Contando apenas caracteres ...
Versão online
fonte
4 + 6 = 10
Primeiro regex:
Segundo regex:
i$
corresponde a algo que termina comi
o segundo./$
corresponde a algo que termina com/
, o primeiro.fonte
5 + 5 = 10
Regex # 1:
Regex # 2:
Os
0
s em ambos os regexes podem ser substituídos por qualquer não-metacaractere e o regex ainda funciona.0.$
corresponde a qualquer coisa cujo segundo último caractere seja0
e^.0
corresponde a qualquer coisa cujo segundo caractere seja0
.fonte
/
es. A alternativa é um engano de um comentário sobre a resposta da maçaneta da porta.Regexes JavaScript, pontuação: 13
Primeiro regex:
Segundo regex:
Explicação: o primeiro regex corresponde a tudo que contém um dígito e o segundo regex corresponde a tudo que não contém a
0
.Teste de JavaScript:
Teste online: http://jsfiddle.net/5VYjC/1/
fonte
12 caracteres ;) JS regex
fonte
Pontuação: 5 + 5 = 10
Levei meia hora para descobrir, mas estou muito feliz por ter :)
1º é:
/j.$/
O segundo é:
/^.j/
A primeira corresponde a uma
j
ocorrência na segunda posição, começando pela direita. O segundo corresponde a umaj
ocorrência na segunda posição, começando da esquerda.Não testei, mas acho que esses RegExs são realmente versáteis, pois
j
podem ser substituídos por qualquer\w
caractere (ou mais?) E ainda devem funcionar bem.PS Isso deve (espero) funcionar em qualquer idioma. No entanto, se não funcionar em nenhum, por favor, informe nos comentários abaixo :)
Teste
fonte
PCRE usando o modificador x: 11 caracteres
O primeiro corresponde a qualquer sequência com um caractere de espaço em branco, mas não contém espaços em branco. O segundo contém espaço em branco, mas é ignorado por causa do
x
modificador; corresponde a qualquer string cujo penúltimo caractere sejas
.PCRE e outros mecanismos usando classes de caracteres: 11 caracteres
O primeiro corresponde a qualquer string com um caractere "word" (letra, dígito, sublinhado) seguido por um literal
w
; o segundo corresponde a qualquer string com um caractere que não seja palavra seguido por um literalw
.PCRE e outros mecanismos que usam classes de caracteres e âncora de limite de palavras: 11 caracteres
O primeiro corresponde a qualquer string com dois caracteres consecutivos "word"; o segundo qualquer string com um caractere que não seja da palavra ou o início da string seguido por um literal
w
.fonte
ECMAScript (11 bytes):
Outros mecanismos REGEXP (14 bytes):
O primeiro corresponde a \ d [..] ou \ 1d [..].
O segundo corresponde a qualquer sequência com um número.
EDITAR:
Originalmente, essa resposta foi publicada como sendo compatível com todos os mecanismos, mas provou estar errada.
Houve um problema com as referências aos grupos de captura (por exemplo, em php).
fonte
\1
não é interpretado como uma referência posterior?"/^\1?d/"
, terá problemas, mas se o fizer'/^\1?d/'
, tudo bem. As aspas fazem uma enorme diferença quando o código é interpretado.