如何使用正则表达式从邮件主题行中提取域名?
提取邮件中的域名(去除末尾右括号)
你的问题出在原正则里的\S+会匹配所有非空白字符,包括邮件地址末尾的右括号)。给你几个简单的解决办法:
方法一:限定匹配到右括号前
把正则改成.*@([^)]+),这里的[^)]+表示只匹配除了右括号之外的所有字符,刚好停在)之前,提取分组1就能得到干净的123.com。方法二:用正向预查排除右括号
正则写成.*@(\S+)(?=\)),(?=\))是正向预查,它会检查后面是不是)但不会把这个括号包含到匹配结果里,同样能得到正确的域名。方法三:提取后手动去除括号(适合快速处理)
如果不想改正则,拿到结果123.com)后,直接用字符串替换把末尾的)删掉就行,比如用代码里的replace(')', '')或者截取到倒数第二个字符。
优先推荐前两种正则方法,一步到位更高效。
内容的提问来源于stack exchange,提问作者Ammar Mohamed
相关产品推荐
相关产品推荐

