В Java, если вы используете класс Matcher, вы можете извлечь группу захвата.Следующее, кажется, делает то, что вы хотите, по крайней мере для предоставленного вами теста.
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Test {
public static void main(String[] args){
String str = "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; GTB6; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.30729; WinTSI 06.12.2009; .NET CLR 3.0.30729; .NET4.0C)";
//str = "aaa";
Pattern pat = Pattern.compile("(.*\\(.*?;.*?;).*\\)");
Matcher m = pat.matcher(str);
System.out.println(m.lookingAt());
String group = m.group(1) + ")";
System.out.println(group);
}
}
Хмм ... Я, кажется, ответил на неправильный вопрос, поскольку вы спрашивали, как это сделать изСвинья не прямо JAVA.