0
我在一些形式的电子邮件:有特殊电子邮件正则表达式的帮助吗?
[email protected]
[email protected]
[email protected]
动态是数后的(N或M或F)字符,@和mydomain.com
,我想之间的子域在字符串中做一个正则表达式来匹配这个表单,如果匹配的话,得到N字符后面的数字,任何帮助都将非常感谢,提前感谢。
我在一些形式的电子邮件:有特殊电子邮件正则表达式的帮助吗?
[email protected]
[email protected]
[email protected]
动态是数后的(N或M或F)字符,@和mydomain.com
,我想之间的子域在字符串中做一个正则表达式来匹配这个表单,如果匹配的话,得到N字符后面的数字,任何帮助都将非常感谢,提前感谢。
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);
非常感谢qu ick帮助,但我还有一个问题:是否mydomain.com之前的名称只能在形式sub1或sub1-sub2意味着字母或数字只有字母或数字分隔破折号,让我? – 2011-02-07 14:00:27