Oi, eu acho que expressei-me mau.
não existe a forma GG482733 (que sua expressão pegaria) O formato correto é: duas letras+dois números+duas letras+dois números+duas letras O comprimento total é no máximo 12, mas o mais comum é 4 ou 6 como por exemplo: GG48LH GG67 GG48 JH32HG ... É mais ou menos assim: GG -> indica uma grade grande (de latitude e longitude) (quadrada) GG48 -> se você dividir o quadro GG em pedacinhos (o tamanho não vem ao caso), GG48 representa um dos pedacinhos de GG (um quadro) GG48LH -> novamente, divide o quadro GG48 em vários pedaços e GG48LH é um desses pedaços, GG48JG é outro e assim vai. Exemplo prático: O localizador da minha residência é GG67MH (com 6 digitos). Dependendo da aplicação eu posso informar: GG67 (menos preciso) GG67MH (mais preciso) Então, o comum na aplicação é aparecerem localizadores, um por linha, assim: GG67 GG35AF GG67MH GG48LH GG67LH DF45OP DF54 Eventualmente podem aparecer: GG67AF33 JH34RD25ES Mas não estou me preocupando com estes casos, posso cortá-los em 6 digitos sem perda de informação relevante à minha aplicação. Cortando esses dois exemplo fica: GG67AF JH34RD Mas, não posso aumentar um grid de 4 digitos para para 6 arbitrariamente, por exemplo: usuário entra com GG48 eu não posso assumir GG48LH ou GG48JH ou GG48EJ ... tenho que considerar apenas GG48 O que eu tentei fazer inicialmente era consistir qualquer sequencia agrupada de duas letras+dois numeros+duas letras+dois numeros e assim por diante. Só para ter certeza que não entrem coisas inválidas como? GGLH ou 2235 ou 22LH (tem que começar por letra obrigatoriamente e sempre apos duas letras vem um numero, depois pode vir duas letras e assim vai) De fato, o que preciso é que, independente do comprimento (que eu sempre vou garantir ser maior que 4), a string comece por duas letras seguidas por dois numeros, eventualmente seguidos por mais duas letras que, eventualmente, podem estar seguidas de dois números e assim por diante. A expressão do Thiago acertou na lata. Mas, existe algum motivo especial para não funcionar no grep? Tipo: [rdlxsr02][wjb069_teDebug][/home/sw/wjb069] > echo GG48LH|sed -r 's/([A-Z]{2}[0-9]{2})+[A-Z]{2}?/|&|/' |GG48LH| [rdlxsr02][wjb069_teDebug][/home/sw/wjb069] > echo GG48|sed -r 's/([A-Z]{2}[0-9]{2})+[A-Z]{2}?/|&|/' |GG48| [rdlxsr02][wjb069_teDebug][/home/sw/wjb069] > echo GG48LH33|sed -r 's/([A-Z]{2}[0-9]{2})+[A-Z]{2}?/|&|/' |GG48LH33| [rdlxsr02][wjb069_teDebug][/home/sw/wjb069] > echo GG48LH33|grep '([A-Z]{2}[0-9]{2})+[A-Z]{2}?' [rdlxsr02][wjb069_teDebug][/home/sw/wjb069] > echo GG48LH33|grep "([A-Z]{2}[0-9]{2})+[A-Z]{2}?" O grep não imprime o match. Comi bronha? Obrigado pelas dicas de todos Abraço Benito > On 12/5/07, voyeg3r <[EMAIL PROTECTED]> wrote: > > --- Em shell-script@yahoogrupos.com.br<shell-script%40yahoogrupos.com.br>, > "Josenivaldo Benito Junior" > <[EMAIL PROTECTED]> escreveu > > > > Olá turma, > > > > Estou apanhando de uma expressão regular. Para ser sincero já não > sei dizer > > se ela é possível (deve ser o sono). > > > > Preciso pegar strings do tipo: > > > > GG48LH > > JH23 > > JH45ER > > FJ87SA76 > > > > Resumindo: > > > > Sempre tem duas letras (de A até Z) seguidas de dois números (de 0 > até 9), > > podendo estar seguidos mais duas letras, podendo estar seguido de > mais dois > > números. (duas letras,dois nros., duas letras, dois nros). Mas a > informação > > pode ter 2,4,6 ou 8 letras (1,2,3 ou 4 conjuntos de letras e números). > > > > O que são essas coisas? Coordenadas em formato World Locator. De > fato podem > > ir até 12 algarismos, o comum é 4 ou 6. Na aplicação que estou tentando > > capturar podem chegar a 8. > > > > Tentei algumas coisas básicas. O mais próximo que cheguei foi: > > > > [A-Z]{2}[0-9]{2} > > ============================ > se o conjunto de números pode ir até 6 faça: > > [A-Z]{2}[0-9]{2,6} > > > > > Que pega um par de letras somente se for seguido de um par de > números. Para > > uma string tipo GG48LH23JV vai funcionar em dois matches, tem algum > problema > > nisso? > > > > Pegar um par de letras+um par de números e assim por diante, não resolve > > toda a situação, pois em 90% dos casos são usados 6 algarismos (ex: > GG67MH). > > > > Alguém pode me dar uma dica? > > > > Valeu. > > Benito > > > > > > [As partes desta mensagem que não continham texto foram removidas] > > > > > [As partes desta mensagem que não continham texto foram removidas]