Olá, primeiramente, muito obrigado pela sua ajuda 
A minha duvida era que poderia ter duas entradas diferentes, olhe no exemplo abaixo
Agora, eu testei o que vc mandou e continua pegando a msm coisa para a primeira entrada, para a entrada com o link ele lançou exceção
Um pequeno teste:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Teste {
public static void main(String[] args) {
String entrada = "<td><strong>Submitted By:</strong><br />Aslak Hellesøy (aslak_hellesoy)</td>";
String entrada2 = "<td><strong>Submitted By:</strong><br />Jodi Showers(<tt><a href=\"/users/jodishowers\">jodishowers</a></tt>)";
Pattern pattern = Pattern
.compile("<td><strong>Submitted By:</strong><br /(?si)>(?:.*?)((?:<tt><a href=(?:.*?)>)?(.*?)(?:</a></tt>)?)</td>");
Matcher matcher = pattern.matcher(entrada);
Matcher m = pattern.matcher(entrada2);
if (matcher.find()) {
System.out.println(matcher.group(1));
System.out.println(m.group(1));
}
}
}
Eu uso a expressão num properties e quando eu queria especificar um caracter ‘(’ eu colocava a barra ‘(’. Naum sei se ta certo, mas quando eu testei a regex direto, o eclipse apontou um erro dizendo que era um caractere de escape invalido, entaum eu removi ele da regex, no entando a saida do programa ficou assim:
Aslak Hellesøy (aslak_hellesoy)
Exception in thread "main" java.lang.IllegalStateException: No match found
at java.util.regex.Matcher.group(Matcher.java:468)
at java.util.regex.Matcher.group(Matcher.java:428)
at br.ufpa.di.connectoss.core.Teste.main(Teste.java:17)
Vc poderia testar ae?
Obrigado