Notorious 1 #1 Posted December 26, 2009 (edited) Padrões (patterns) #DefiniçãoDicioná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 caracteres • 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 April 3, 2010 by Notorious Share this post Link to post
Gpwjhlkdcf 21 #2 Posted December 31, 2009 (edited) 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 December 31, 2009 by Skyen Hasus Share this post Link to post
Dark Billie 0 #3 Posted January 19, 2010 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 #4 Posted January 19, 2010 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 #5 Posted January 19, 2010 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
Roku 0 #7 Posted January 28, 2010 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 #8 Posted January 28, 2010 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 #9 Posted January 28, 2010 mano ta horriveln 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 #10 Posted January 28, 2010 mano ta horriveln 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 #11 Posted January 28, 2010 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 #12 Posted January 29, 2010 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 #13 Posted January 29, 2010 Ficou Bom pow deu para dar um sacada nesse seu TOPICO Obrigado Share this post Link to post
tio juka 0 #14 Posted January 29, 2010 Caraca mano mto bom concerteza vai ajuda mta gent como me ajudo^^... Share this post Link to post
dragonlorde 0 #15 Posted April 4, 2010 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 Share this post Link to post
Notorious 1 #16 Posted April 4, 2010 A aula esta boa so que o tema patterns é muito comprido e complexo e ai falto bastante informação :SSobre sets e os items de padrao... Bem que podia fazer a parte 2 ne É, é 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