Jump to content
Fivewin Brasil

Expressão regular


emotta

Recommended Posts

Estou com o tempo limitado então se alguem que manja de expressão regular conseguir isso pra mim me ajudará muito. 

Eu preciso que atraves da funcao HB_REGEX(cRegExp,cText) me retorne um array com o nome do arquivo, tipo do problema (waring ou error) e a linha do erro.

cText := "G:\Ver16\Dev\Sistema\Source\ponto\ponc011.prg(4) Error E0020  Incomplete statement or unbalanced delimiters"
 

Portanto para o cText acima eu precisaria do seguinte do retorno de pelo menos essas 3 informações abaixo:

G:\Ver16\Dev\Sistema\Source\ponto\ponc011.prg

4

Error E0020  Incomplete statement or unbalanced delimiters

 

 

Alguem consegue montar a expressão regular pra mim?

Link to comment
Share on other sites

Edu, acho que assim daria
aArr := {}
nPos := At("(",cTex)
aAdd(aArr,Left(cTex,nPos-1))

cTex := StrTran(cTex,aArr[1]+"(","")

nPos := At(")",cTex)
aAdd(aArr,Left(cTex,nPos-1))
cTex := StrTran(cTex,aArr[2]+")","")
aAdd(aArr,cTex)

Ficando um array de 3 elementos

Fiz de cabeça pode ocorrer algum erro hehehe
Abraços
 

Link to comment
Share on other sites

 

Edu, acho que assim daria
aArr := {}
nPos := At("(",cTex)
aAdd(aArr,Left(cTex,nPos-1))

cTex := StrTran(cTex,aArr[1]+"(","")

nPos := At(")",cTex)
aAdd(aArr,Left(cTex,nPos-1))
cTex := StrTran(cTex,aArr[2]+")","")
aAdd(aArr,cTex)

Ficando um array de 3 elementos

Fiz de cabeça pode ocorrer algum erro hehehe
Abraços
 

Vagner, o problema é que a solução precisa ser através de expressão regular... Não pode ser assim, estou precisando da expressão regular que interprete aquela linha para que o VSCODE entenda qual fonte e linha que deu erro de compilação... E o VSCODE só entende através de uma expressão regular de um JSon.

 

 

Link to comment
Share on other sites

Um programador da minha equipe pegou pra resolver essa questão... Estou colocando aqui apenas pra curiosidade caso alguem queira se aprofundar na questão de expressão regular.

Function u_Teste()
LOCAL cRegEx := "^(.*)[(](\d+)[)]\s+(.*)"
LOCAL cText  := "G:\Ver16\Clientes\JFA\Sistema\TempHRB\emt_20200508_152330.prg(19) Error E0003  Duplicate variable declaration: 'CTEXTO'"
LOCAL aResult
Local nI
Local cTexto

aResult := HB_RegEx( cRegEx, cText )
If ValType(aResult) == "A"
    cTexto := ""
    For nI := 1 to Len(aResult)
        cTexto+=Str(nI,3)+" "+aResult[nI]+Chr(13)+Chr(10)
    Next
    MsgStop(cTexto)
EndIf

RETURN

 

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...