none
Ajuda com expressão regular RRS feed

  • Pergunta

  • Tenho um arquivo com varias linhas parecido com isso:

    prog1 \\192.168.0.1 jose:abc123
    prog1 \\192.168.0.1 jose:abc123
    prog2 \\192.168.0.1 jose:abc123
    prog2 \\192.168.0.1 jose:abc123
    prog1 \\192.168.0.1 jose:abc123
    prog1 \\192.168.0.1 jose:abc123
    prog4 \\192.168.0.1 jose:abc123
    prog4 \\192.168.0.1 jose:abc123


    Pode ser que no futuro alguem adicione mais linhas seguindo o padrão
    ex.:"job4  \\192.168.0.1 jose:abc123"

    Ai quero criar uma tela que liste como opções (radio em hta) a primeira coluna sem repetir.
    De inicio fiz um if que comprava com o anterior, mas não fucionou, hove duplicidade de opções.
    Então pensei vou juntar numa variavel toda ocorrencia da coluna1 delimitando por ":" e um expressão regular para ver se já havia ocorrencia da opção.

    strRegExp = "[\b:][A-Z a-z 0-9][:\b]"
    Set objRE = New RegExp
    objRE.Pattern    = strRegExp

    Até ai eu acho que esta certo (eu acho), mas como vou comparar para saver se por exemplo "prog1" já foi listado? como comparar o resuldado da RegExp com uma variavel ou string?

    Grato a todos pela ajuda.

    Edson.
    quarta-feira, 27 de maio de 2009 17:06

Respostas

  • Olá Jesiel,
    Pra falar a verdade, resolvi o problema hoje pela manhã.
    Estava querendo criar um montro para nada...rsrs... fiz um simple InSTR que resolvel tudo.
    Fico grato mais uma vez por sua ajuda!!!.

    Abraço.

    Edson
    • Marcado como Resposta edson_ed quinta-feira, 28 de maio de 2009 16:38
    quinta-feira, 28 de maio de 2009 16:38

Todas as Respostas

  • Olá,

    O exemplo abaixo, varre um arquivo (arquivo1) e grava o arquivo2 somente com os valores que não são iguais. (repetidos). Acho que irá atender sua necessidade.

    Dim arrFile1(), arrFile2()
    i = 0
    j = 0

    Set objFSO = CreateObject("Scripting.FileSystemObject")

    'VARIAVEIS QUE PRECISAM SER ALTERADAS ATENÇAO: PRECISA EXISTIR OS 3 ARQUIVOS
    Set objFile1 = objFSO.OpenTextFile("C:\arquivo1.txt", 1)
    strFile3 = "c:\arquivo2.txt"

    Do Until objFile1.AtEndOfStream
         Redim Preserve arrFile1(i)
         arrFile1(i) = objFile1.ReadLine
         i = i + 1
    Loop

    objFile1.Close


    For l = Lbound(arrFile1) to UBound(arrFile1) Step 1
       lIgual = False
       if objFSO.FileExists(strFile3) Then
          Set objNewFile = objFSO.OpenTextFile(strFile3, 1)
          Do Until objNewFile.AtEndOfStream
             if objNewFile.ReadLine = arrFile1(l) Then
                lIgual = True
             End if
          Loop  
       Else
          Set objNewFile = objFSO.OpenTextFile(strFile3, 8, True, 0)
          lIgual = True
       End if

       if lIgual = Truen Then
          Set objNewFile = objFSO.OpenTextFile(strFile3, 8, True, 0)
          objNewFile.WriteLine arrFile1(l)
          objNewFile.Close
       End if
    Next



    Faça os testes e nos retorne.

    Até mais,

    Jesiel

    Obs.: Se útil, classifique
    quinta-feira, 28 de maio de 2009 12:46
  • Olá Jesiel,
    Pra falar a verdade, resolvi o problema hoje pela manhã.
    Estava querendo criar um montro para nada...rsrs... fiz um simple InSTR que resolvel tudo.
    Fico grato mais uma vez por sua ajuda!!!.

    Abraço.

    Edson
    • Marcado como Resposta edson_ed quinta-feira, 28 de maio de 2009 16:38
    quinta-feira, 28 de maio de 2009 16:38
  • Uma saída bem simples, com PowerShell:
     
    cat arquivo.txt | group
     
     
    []s,
     

    --
    Vinicius Canto Xavier
    MVP Scripting - Admin Frameworks - PowerShell
     
    Blog sobre scripting e powershell: http://viniciuscanto.blogspot. com
     
    "edson_ed" wrote in message news:dddf983c-9ce9-462 1-976b-2c3ef2af2950...
    Tenho um arquivo com varias linhas parecido com isso:

    prog1 \\192.168.0.1 jose:abc123
    prog1 \\192.168.0.1 jose:abc123
    prog2 \\192.168.0.1 jose:abc123
    prog2 \\192.168.0.1 jose:abc123
    prog1 \\192.168.0.1 jose:abc123
    prog1 \\192.168.0.1 jose:abc123
    prog4 \\192.168.0.1 jose:abc123
    prog4 \\192.168.0.1 jose:abc123


    Pode ser que no futuro alguem adicione mais linhas seguindo o padrão
    ex.:"job4  \\192.168.0.1 jose:abc123"

    Ai quero criar uma tela que liste como opções (radio em hta) a primeira coluna sem repetir.
    De inicio fiz um if que comprava com o anterior, mas não fucionou, hove duplicidade de opções.
    Então pensei vou juntar numa variavel toda ocorrencia da coluna1 delimitando por ":" e um expressão regular para ver se já havia ocorrencia da opção.

    strRegExp = "[\b:][A-Z a-z 0-9][:\b]"
    Set objRE = New RegExp
    objRE.Pattern    = strRegExp

    Até ai eu acho que esta certo (eu acho), mas como vou comparar para saver se por exemplo "prog1" já foi listado? como comparar o resuldado da RegExp com uma variavel ou string?

    Grato a todos pela ajuda.

    Edson.
    quarta-feira, 3 de junho de 2009 05:52
    Moderador