Como negar um regex dentro de outro regex

2

Ou seja, dado um POSIX regex X, que POSIX regex é o complemento de X? (de uma maneira mais detalhada: como obter o regex X 'que corresponde a todas as strings que não são correspondidas pelo X, mas não corresponde a nenhuma string que seja correspondida pelo X)

Se isso não estiver disponível no POSIX, existe uma extensão comum que o tenha?

    
por ricab 02.07.2013 / 14:22

1 resposta

2

Eu acredito que você poderia tentar (?:(?!X).) com PCRE, definitivamente funciona quando X é uma string, mas não tenho 100% de certeza de que funcionaria o tempo todo quando X é uma regex.

echo "dust mite" | grep -P '^(?:(?!abc).)*$'
dust mite

echo "dust abc mite" | grep -P '^(?:(?!abc).)*$'
echo "dust mite" | grep -P '^(?:(?!abc(x+y)).)*$'
dust mite

echo "dust abcxxxxy mite" | grep -P '^(?:(?!abc(x+y)).)*$'
    
por 02.07.2013 / 16:20