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