it-swarm-pt.tech

Como crio uma regex no Emacs para exatamente 3 dígitos?

Eu quero criar um regexp no Emacs que corresponda exatamente a 3 dígitos. Por exemplo, quero corresponder ao seguinte:

123
345
789

Mas não

1234
12
12 23

Se eu usar [0-9]+ Combino qualquer sequência única de dígitos. Eu pensei [0-9]{3} funcionaria, mas quando testado no re-builder, não corresponde a nada.

17
Alex B

Se você estiver inserindo o regex interativamente e quiser usar {3}, você precisa usar barras invertidas para escapar das chaves. Se você não deseja corresponder a nenhuma parte das seqüências de números mais longas, use \b para corresponder aos limites do Word em torno dos números. Isso deixa:

\b[0-9]\{3\}\b

Para quem deseja obter mais informações sobre \b, consulte os documentos :

corresponde à cadeia vazia, mas apenas no início ou no final de uma palavra. Portanto, \bfoo\b corresponde a qualquer ocorrência de foo como uma palavra separada. \bballs?\b corresponde a ball ou balls como uma palavra separada. \b corresponde no início ou no final do buffer, independentemente do texto que aparece ao lado.

Se você deseja usar esse regex do código elisp, como sempre, deve escapar das barras invertidas mais uma vez. Por exemplo:

(highlight-regexp "\\b[0-9]\\{3\\}\\b")
40
Joe Hildebrand

[0-9][0-9][0-9], [0-9]{3} ou \d{3} não funcionam porque também correspondem a "1234".

Portanto, depende do que é o delimitador.

Se estiver em uma variável, você poderá fazer ^/[0-9]{3}/$. Se estiver delimitado por espaço em branco, você poderá fazer \w+[0-9]{3}\w+

8
SCdF

Você deve usar isto:

"^\d{3}$"
2
Lukas Šalkauskas

Como outros apontam, você precisa corresponder mais do que apenas os três dígitos. Antes dos dígitos, é necessário iniciar a linha ou algo que não seja um dígito. Se o emacs suportar\D, use-o. Caso contrário, use o conjunto [^ 0-9].

Em poucas palavras:

(^|\D)\d{3}(\D|$)
2
Antti Rasinen

Ao experimentar expressões regulares no Emacs, acho regex-tool bastante útil:

ftp://ftp.newartisans.com/pub/emacs/regex-tool.el

Não é uma resposta (a pergunta já está respondida), apenas uma dica geral.

1
Chopmo

[0-9] [0-9] [0-9] corresponderá a mínimo de 3 números; portanto, como Joe mencionou, você deve (no mínimo) incluir\b ou qualquer outra coisa que delimitará os números. Provavelmente, o método mais seguro é:

[^ 0-9] [0-9] [0-9] [0-9] [^ 0-9]

0
decibel