Você pode usar:
.*(REQ_[^|]*)\|
O "|" caractere será excluído.
Eu tenho o seguinte texto abaixo. Como escrevo o regex para capturar todo o texto relacionado a REQ_XXX
?
Esta é minha expressão .*(REQ_.*)\|
, mas captura |3 |4 |5
. Eu só quero que ele pare após o primeiro |
que ele vê.
Você pode usar:
.*(REQ_[^|]*)\|
O "|" caractere será excluído.
Editar:
.*(REQ_.*?)\|
O truque é ?
informar ao anterior.*
para parar o mais cedo possível. Dessa forma, o primeiro |
que segue termina o escopo de .*
. Isso é exatamente o que você quer.
Minha resposta antiga está abaixo. Funciona bem, mas acho que o acima é o caminho certo.
Resposta antiga:
.*
corresponde (quase) tudo, incluindo |
. Use [^|\n]*
para corresponder a tudo, exceto |
e nova linha.
.*(REQ_[^|]*)\|
\n
é necessário porque o [^|]*
puro pode se estender por várias linhas. Eu acho que você não quer isso.
Algumas das soluções já estão postadas em outras respostas, estou dando um resumo aqui.
Você pode seguir várias abordagens aqui, você precisa decidir com base nas suas necessidades qual delas usar:
.*(REQ_[\w]+)[\s]*\|
[\w]+
corresponde a todos os caracteres da palavra (letras, números e "_") |
não estarem incluídos no resultado capturado ( [\s]*
está fora dos colchetes) .*(REQ_[^|]+)\|
Se REQ_
for sempre seguido por caracteres de palavras, você pode simplesmente usar REQ_w+
ou, se não quiser corresponder a ABCREQ_123
, use a limite de palavras : \bREQ_\w+
.
Tags regex