gpt4 book ai didi

java - 使用特殊的电子邮件正则表达式

转载 作者:行者123 更新时间:2023-12-01 16:39:57 25 4
gpt4 key购买 nike

我有一些以下格式的电子邮件:

staticN123@sub1.mydomain.com
staticN456@sub2.mydomain.com
staticN789@sub3-sub.mydomain.com

动态是(N或M或F)字符后面的数字,以及@和mydomain.com之间的子域

我想制作一个与字符串中的这种形式匹配的正则表达式,如果匹配,则获取 N 字符后面的数字。

最佳答案

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

除了[0-9]+,您也可以使用\d+,这是相同的。@ 后面的 .+ 可能会匹配太多。最终您希望将其替换为 [^\.]+ 以排除 sub.sub 域。

更新:

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

添加 ^$ 来匹配搜索字符串的 startend 以避免错误匹配,例如somthingwrong_staticN123@sub.mydomain.com.xyz

你可以在这里测试这个正则表达式 link to 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 );

关于java - 使用特殊的电子邮件正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4922040/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com