Esta regex funciona para mim:
(?:(?:todo|TODO)(?:\[[A-Z,a-z]+\-\d+\])?\s(\s*\b.*\b)*)|(?:\/\*\s*(?:todo|TODO)(?:\[[A-Z,a-z]+\-\d+\])?\s(?:(?!\*\/)[\s\S])*\*\/)
Basicamente, procura o seguinte:
- Uma palavra-chave todo ou TODO opcionalmente sufixada por um id de ticket / problema entre colchetes e qualquer quantidade de caracteres após um único caractere de espaço em branco.
- Um comentário Java de várias linhas começando com / * seguido por qualquer quantidade de espaço em branco e as condições descritas na descrição de tarefas de uma única linha acima. Ele termina quando encontra * / em qualquer uma das linhas a seguir.
Exemplos de linha única:
todo some very important stuff
TODO[SAOY-1376] An urgent bug fix described in the SAOY-1376
// todo some very important stuff
// TODO[SAOY-1376] An urgent bug fix described in the SAOY-1376
Exemplos de várias linhas:
/* todo assignee or something
a very important message
another thing
*/
/* TODO[SAO-13]
* a very important message
* another thing
*/