O não funciona porque você não está capturando esse grupo - você precisaria colocar parênteses em torno dele.
Mas, parece que há mais problemas ... Quando eu tento no Notepad ++ com o seu exemplo, ele não encontra uma correspondência, e eu não esperava.
Seu padrão atual procura o balão na tag div aberta, seguido por qualquer número de caracteres que não sejam aspas duplas, seguido pela tag de intervalo de tempo. No seu exemplo, você tem aspas duplas na tag img primeiro, portanto, não corresponde.
Na parte de captura de tempo, há também algumas coisas estranhas acontecendo: seu [0-9]*
significa qualquer número de ocorrências de dígitos 0-9, mas depois você o repete. Eu estou supondo que você realmente só queria 0-9 duas vezes, seguido por dois pontos, seguidos por mais dois.
Então: <div class="bubble in">(.*?)<span class="time"><div style="text-align:right">([0-9]{2}):([0-9]{2})</span></div>
O .*?
procurará não-vivamente por correspondências. Mas, se uma bolha em div não tiver o intervalo de tempo, então ela sairá dessa div para qualquer outra coisa até encontrar um intervalo de tempo. Espero que isso seja algo que você possa enfrentar, caso contrário, será realmente complicado. O [0-9]{2}
diz ao regex que você quer exatamente dois. Se você não tiver zeros à esquerda em horas, altere-o para {1,2}
, que procurará entre um e dois.
Finalmente, no seu substituto - agora há 3 grupos capturados ... O "Algum texto, eu quero manter! ...", as horas e os minutos. Então não está presente. Ah, e não esqueça de marcar o . corresponde à opção newline , ou você não irá corresponder (pelo menos a partir do seu exemplo).
Boa sorte!