emotta Posted May 6, 2020 Report Share Posted May 6, 2020 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? Quote Link to comment Share on other sites More sharing options...
vagner Posted May 7, 2020 Report Share Posted May 7, 2020 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 Quote Link to comment Share on other sites More sharing options...
emotta Posted May 7, 2020 Author Report Share Posted May 7, 2020 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. Quote Link to comment Share on other sites More sharing options...
emotta Posted May 14, 2020 Author Report Share Posted May 14, 2020 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 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.