2011-02-07 67 views

回答

6
staticN([0-9]+)@.+\.mydomain\.com 

,而不是[0-9]+你也可以使用\d+這是相同的。 @.+ @可能匹配得太多。最終你想用[^\.]+代替它以排除sub.sub域。

更新:

^staticN(\d+)@[a-z0-9_-]+\.mydomain\.com$ 

添加^$匹配開始和搜索字符串的,以避免錯誤匹配到例如[email protected]

您可以測試在這裏這個正則表達式link to rubular

-

將在下面的評論中討論的變化:

^(?:.+<)?static[NMF](\d+)@[a-z0-9_-]+\.mydomain\.com>?$ 

代碼示例回答的問題在其中一條評論中:

// input 
String str = "reply <[email protected]"; 
// 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); 
+0

非常感謝qu ick幫助,但我還有一個問題:是否mydomain.com之前的名稱只能在形式sub1或sub1-sub2意味着字母或數字只有字母或數字分隔破折號,讓我? – 2011-02-07 14:00:27