Ir para conteúdo
Entre para seguir isso  
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.

Editado por Notorious

Compartilhar este post


Link para o 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.

Editado por Skyen Hasus

Compartilhar este post


Link para o 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

Compartilhar este post


Link para o 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

Compartilhar este post


Link para o 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:

Compartilhar este post


Link para o post
pejuge2    1
pejuge2

Ficou legal o tutorial

Compartilhar este post


Link para o post
Roku    0
Roku

mano ta horrivel

n da pra entender nada

mas a formatção tá legal

mas isso nao importa

Compartilhar este post


Link para o 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

Compartilhar este post


Link para o 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~

Compartilhar este post


Link para o 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.

Compartilhar este post


Link para o 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

Compartilhar este post


Link para o 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

Compartilhar este post


Link para o post
Pandá s2    0
Pandá s2

Ficou Bom pow deu para dar um sacada nesse seu TOPICO

 

Obrigado

Compartilhar este post


Link para o post
tio juka    0
tio juka

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

Compartilhar este post


Link para o 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

Compartilhar este post


Link para o 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)

Compartilhar este post


Link para o post
Visitante
Este tópico está impedido de receber novos posts.
Entre para seguir isso  
  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×