2011-02-07 41 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