すみません、またまた正規表現でつまずいたので教えてください。

-------------------------
String mail = "mailto:info@jafrec.org?subject=title" ;

Pattern pattern = Pattern.compile(
"(([0-9a-zA-Z!#\\$%&'\\*\\+\\-/=\\?\\^_`\\{\\}\\|~]+(\\.[0-9a-zA-Z!#\\$%&'\\*\\+\\-/=\\?\\^_`\\{\\}\\|~]+)*)|(\"[^\"]*\"))"
+ "@[0-9a-zA-Z!#\\$%&'\\*\\+\\-/=\\?\\^_`\\{\\}\\|~]+"
+ "(\\.[0-9a-zA-Z!#\\$%&'\\*\\+\\-/=\\?\\^_`\\{\\}\\|~]+)*");

Matcher m = pattern.matcher(mail);
if (m.find())
System.out.println(m.group());
-------------------------

info@jafrec.org?subject=title

-------------------------

このパターン文字列は、このサイトからもらってきて、行頭の「^」と行末の「$」を消しただけのものです。

[メールアドレスのチェックをするサンプルコード]
https://www.sejuku.net/blog/13215


要するにメールアドレスでは「?」は使用可能な文字ということですが、
subject=title という文字列を含まないちゃんとしたメールアドレスはどうやって抽出すればいいのしょうか?