Esta expresión regular me funciona:
(?:(?:todo|TODO)(?:\[[A-Z,a-z]+\-\d+\])?\s(\s*\b.*\b)*)|(?:\/\*\s*(?:todo|TODO)(?:\[[A-Z,a-z]+\-\d+\])?\s(?:(?!\*\/)[\s\S])*\*\/)
Básicamente busca lo siguiente:
- A TODO o TODO palabra clave opcionalmente con el sufijo Identificación del billete / cuestión en corchetes y cualquier cantidad de caracteres después de un solo carácter de espacio en blanco.
- Un comentario de varias líneas de Java que comienza con / * seguido de cualquier cantidad de espacio en blanco y, a continuación, las condiciones descritas en la descripción de una sola línea de todo lo anterior. Termina una vez que encuentra * / en cualquiera de las siguientes líneas.
Ejemplos de una sola línea:
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
Ejemplos de varias líneas:
/* todo assignee or something
a very important message
another thing
*/
/* TODO[SAO-13]
* a very important message
* another thing
*/