staticN([0-9]+)@.+\.mydomain\.com
вместо [0-9]+
вы также можете использовать \d+
, что тоже самое.
.+
после @ может слишком сильно совпадать. в конечном итоге вы захотите заменить это на [^\.]+
, чтобы исключить домены sub.sub.
Обновление:
^staticN(\d+)@[a-z0-9_-]+\.mydomain\.com$
добавление ^
и $
для поиска начало и конец строки поиска, чтобы избежать ложного совпадения, например somthingwrong_staticN123@sub.mydomain.com.xyz
Вы можете проверить это регулярное выражение здесь ссылка на Rubular
-
применение изменений, обсуждаемых в комментариях ниже:
^(?:.+<)?static[NMF](\d+)@[a-z0-9_-]+\.mydomain\.com>?$
пример кода для ответа на вопрос в одном из комментариев:
// input
String str = "reply <staticN123@sub1.mydomain.com";
// example 1
String nr0 = str.replaceAll( "^(?:.+<)?static[NMF](\\d+)@[a-z0-9_-]+\\.mydomain\\.com>?$", "$1" );
System.out.println( nr0 );
// example 2 (precompile regex is faster if it's used more than once afterwards)
Pattern p = Pattern.compile( "^(?:.+<)?static[NMF](\\d+)@[a-z0-9_-]+\\.mydomain\\.com>?$" );
Matcher m = p.matcher( str );
boolean b = m.matches();
String nr1 = m.group( 1 ); // m.group only available after m.matches was called
System.out.println( nr1 );