Estou tentando analisar um documento que tem números de referência espalhados por ele.
Texto texto texto {4: 2} texto mais incrível {4: 3} muito mais tarde em {222: 115} e ainda mais texto.
As referências sempre estarão entre colchetes e sempre haverá dois pontos entre os dois. Eu escrevi uma expressão para encontrá-los.
{[0-9]:[0-9]}
No entanto, isso obviamente falha no momento em que você encontra um número de dois ou três dígitos, e estou tendo problemas para descobrir o que deveria ser. Nunca haverá mais de 3 dígitos {999: 999} com o tamanho máximo para lidar.
Alguém tem uma idéia de uma expressão adequada para lidar com isso?
regex
tag.Respostas:
tente adicionar mais pontos
fonte
Qual mecanismo de regex você está usando? A maioria deles suportará a seguinte expressão:
Na
\d
verdade, é uma abreviação para[0-9]
, mas a parte importante é a adição do+
que significa "um ou mais".fonte
Tente o seguinte:
Os
{1,3}
meios "correspondem entre 1 e 3 dos caracteres anteriores".fonte
Você pode especificar quantas vezes deseja que o item anterior corresponda usando
{min,max}
.Além disso, você pode usar
\d
dígitos, em vez da[0-9]
maioria dos tipos de expressões regulares:Você também pode considerar escapar do exterior
{
e}
, apenas para deixar claro que eles não fazem parte de uma definição de repetição.fonte
{\ d *: \ d *} deve funcionar.
* significa corresponder 0 ou mais das ocorrências anteriores, que é um dígito.
fonte