Jump to content
Sign in to follow this  
Notorious

[N:Avançado] Padrões

Recommended Posts

Notorious    1
Notorious

Padrões

(patterns)

#Definição

Dicionário:
Que serve ou pode servir de modelo ou de exemplo.

Lua:
Um
padrão
é uma seqüência de itens de padrão.

 

Minha explicação:
Padrão em Lua é uma cadeia de caracteres com caracteristica singular que contém classes de caracteres e/ou itens de padrão a serem identificados em uma determinada string, pode conter capturas ou simplesmente indicar um modelo.

#Exemplo

Pra quem ainda nao entendeu nada atraves das definicoes eu vou dar exemplos. Em uma string (cadeia de caracteres) : "Meu nome é João. Meu nome é Pedro. Meu nome é José.", pode se observar um padrão, um modelo que ocorre fielmente: "Meu nome é (nome).". Atraves de padrões voce pode usar funções lua para retirar, extrair informações de textos, documentos html, etc ...

#Funções

Algumas funções da biblioteca string aceitam padrões como variaveis para se manipular strings:

string.find(s, pattern, [init, [plain]])
-- Procura a primeira ocorrencia do padrão "pattern" na string "s" e retorna a posição inicial, final e as capturas.

Exemplo:
local i,f,c = string.find(s, pattern),

i = inicio, f = final, c = captura.

 

string.gmatch(s, pattern)
-- A cada vez que é chamada retorna a proxima ocorrencia do padrão "pattern" na string "s", sendo assim usada com for.

Exemplo:
for a (...) in string.gmatch(s, pattern) do

print(a)

end

a e seu proximos (for a,b,c ...) são respectivamente as capturas do padrão.

 

string.gsub(s, pattern, repl [, n])
-- Identifica o padrão "pattern" na string "s" e substitui por "repl".

Exemplo: s = "lua", string.repl(s, "lua", "hello"), finalmente

s = "hello".

 

string.match(s, pattern [, init])
-- Procura a primeira ocorrencia do padrão "pattern" na string "s" e retornas as capturas do padrão.

 

#Capturas

Capturas são subpadrões dentro de um padrão, são delimitadas por parenteses. Quando uma ocorrencia do padrão ocorre, as capturas são armazenadas para uso futuro. Capturas são numeradas de acordo com os seus parênteses esquerdos. Por exemplo, no padrão "(a*(.)%w(%s*))", a parte da cadeia casando "a*(.)%w(%s*)" é armazenada como a primeira captura (e portanto tem número 1); o caractere casando "." é capturado com o número 2 e a parte casando "%s*" possui número 3.

#Criando um padrão

Queremos criar um padrão para capturar a quantidade de dinheiro que a pessoa deseja depositar atraves de um comando usando parametros.

Queremos identificar da seguinte maneira: "deposit, qtd". Sendo qtd somente digitos numericos. Então criamos um padrão da seguinte maneira: "deposit,
(
%d
+
)
".

Indicação de captura: ()

• Classe de caracter
es

Item de padrão

Assim se o parametro for "deposit, 500" e usarmos a funcao string.find da seguinte maneira: local i, f, qtd = string.find(parametro, "deposit, (%d+)").

A variavel i obterá 1 (inicio do padrão), f obterá 12 (final do padrão) e qtd obterá 500 (captura do padrão), o valor procurado.

 

Voce poderá encontrar a lista de classes de caracteres, items de padrão e mais inforrmações no manual de referencia lua (índice #Padrões)

http://www.lua.org/manual/5.1/pt/manual.html#5.4.1

Tutorial desenvolvido integralmente por Notorious,

caso veja algo semelhante em outro forum

sem os devidos créditos, avise.

Edited by Notorious

Share this post


Link to post
Gpwjhlkdcf    21
Gpwjhlkdcf

Só lembrando que em outras linguagens isto é conhecido como "Expressões Regulares" (Regular Expressions, Regex...)

Os patterns em Lua são só as capturas e ancoras, as funções são somente funções.

 

Sua definição ficou confusa, e patterns não são objetos...

 

Aprovado e Movido.

Edited by Skyen Hasus

Share this post


Link to post
Dark Billie    0
Dark Billie

kra mt loco

formatação deve ter dado um trabalho

 

mas o q importa é q deu pra entender :weegee:

toma um thanks ae nerdao

Share this post


Link to post
Mock    32
Mock

esqueceu de falar sobre umas coisas basicas e improtantes.

[ ]

.

e a colocação de + ou - no final

ou usar algo para pegar isso:

meu nome é=Jao idade=14

;D

mais ainda sim o tuto ta legal

Share this post


Link to post
Notorious    1
Notorious
esqueceu de falar sobre umas coisas basicas e improtantes.

[ ]

.

e a colocação de + ou - no final

ou usar algo para pegar isso:

meu nome é=Jao idade=14

;D

mais ainda sim o tuto ta legal

Eu citei sim o + e o -

Ali em criando um padrão, é o item de padrão

Mas como nao da pra colocar toda essas listas aqui eu indiquei a lista direto no manual de referencia :fail:

Share this post


Link to post
pejuge2    1
pejuge2

Ficou legal o tutorial

Share this post


Link to post
Roku    0
Roku

mano ta horrivel

n da pra entender nada

mas a formatção tá legal

mas isso nao importa

Share this post


Link to post
pejuge2    1
pejuge2

desculpe Roku mas o conteúdo está muito bom, não trata de tudo sobre patterns mas o básico está esclarecido, talvez você deva estudar mais para conseguir compreender o que o tutorial está dizendo [N:Avançado]Padrões

Share this post


Link to post
Mock    32
Mock
mano ta horrivel

n da pra entender nada

mas a formatção tá legal

mas isso nao importa

 

erm.

eu entendi perfeitamente.

um amigo nosso que nao sabia entendeu tambem

apesar de ele pegar so um lado de patterns ainda sim essa parte que foi falada esta bem clara.

[N:Avançado] Padrões

talvez vocÊ esteja em intermediario ainda.

 

Eu citei sim o + e o -

Ali em criando um padrão, é o item de padrão

Mas como nao da pra colocar toda essas listas aqui eu indiquei a lista direto no manual de referencia

não, eu queria dizer alem do [] e do + e o - que seria as repetições vc nao citou . %s %p etc~

Share this post


Link to post
Dark Billie    0
Dark Billie
mano ta horrivel

n da pra entender nada

mas a formatção tá legal

mas isso nao importa

Só porque uma anta não entendeu que ele vai mudar o tutorial.

Não era você que tinha o irmãozinho programador que faz tudo em 5 minutos? Devia ter entendido.

 

Garanto que seu Q.I. deve estar abaixo da média brasileira. Vá ler um livro, jovem tolo.

Share this post


Link to post
Roku    0
Roku

dark, nao se mete, volta pro calabouço

alem do mais voce está ignorado

#topic

nao to no intermediario, mas nao to conseguindo entender, eu acho mau explicado, se voces conseguem, ja é otra coisa

vo procurar algo melhor de pattern

Share this post


Link to post
Dark Billie    0
Dark Billie

mimimi não tenho argumentos digo que tá ignorado

que tal ao invés de ir procurar algo melhor sobre patterns ir procurar um lugar pra enfiar essa sua bunda gorda, já que na cadeira não cabe

mas nao to conseguindo entender, eu acho mau explicado

só acha, não tá, esse teu Q.I. de 60 e suas tetas grandes dificultam você de entender qualquer conteúdo

 

aprenda a ser menos arrogante, moleque

Share this post


Link to post
Pandá s2    0
Pandá s2

Ficou Bom pow deu para dar um sacada nesse seu TOPICO

 

Obrigado

Share this post


Link to post
tio juka    0
tio juka

Caraca mano mto bom concerteza vai ajuda mta gent como me ajudo^^...

Share this post


Link to post
dragonlorde    0
dragonlorde

A aula esta boa so que o tema patterns é muito comprido e complexo e ai falto bastante informação :S

Sobre sets e os items de padrao...

Bem que podia fazer a parte 2 ne :P

Share this post


Link to post
Notorious    1
Notorious
A aula esta boa so que o tema patterns é muito comprido e complexo e ai falto bastante informação :S

Sobre sets e os items de padrao...

Bem que podia fazer a parte 2 ne :P

É, é bem comprido mesmo, nao deu pra falar de tudo

Mas a aula ja esta sendo desenvolvida, logo menos sera postada x)

Share this post


Link to post
Guest
This topic is now closed to further replies.
Sign in to follow this  
  • Recently Browsing   0 members

    No registered users viewing this page.

×