我正在学习正则表达式,并且无法google从电子邮件地址获取
串
first.name@google.com
Run Code Online (Sandbox Code Playgroud)
我只是想得到谷歌,而不是google.com
正则表达式:
[^@].+(?=\.)
Run Code Online (Sandbox Code Playgroud)
结果:https://regex101.com/r/wA5eX5/1
从我的理解.它忽略@了之后找到一个字符串,直到.(点)使用(?=\.)
我做错了什么?
das*_*ght 11
[^@]表示"匹配一个符号,它是不是一个@迹象,是不是你在找什么-使用回顾后,(?<=@)为@你的(?=\.)前瞻的\.中间提取服务器名称:
(?<=@)[^.]+(?=\.)
Run Code Online (Sandbox Code Playgroud)
中间部分[^.]+表示"一个或多个非点字符".
更新的答案:
使用捕获组并保持简单:)
@(\w+)
Run Code Online (Sandbox Code Playgroud)
通过拆分它说明
( 捕获组提取)
\w代表字字符 [A-Za-z0-9_]
+是一个量词为一个或一个以上的occurances\w
我使用的解决方案的正则表达式我的任务,但后来发现有些电子邮件并不那么容易:foo@us.industries.com,foobar@tm.valves.net,和foo@ge.test.com
对于来到这里也想要子域(或被它切断)的任何人,这是正则表达式:
(?<=@)[^.]*.[^.]*(?=\.)
Run Code Online (Sandbox Code Playgroud)
小智 5
当我正在努力获取电子邮件地址的域名时,没有一个符合我的需要:
.com.ar或co.jp)例如,test@ext.domain.com.mx我需要匹配domain.com.mx
所以我做了这个:
[^.@]*?\.\w{2,}$|[^.@]*?\.com?\.\w{2}$
这是 regex101 的链接来说明正则表达式:https://regex101.com/r/vE8rP9/59
您可以通过添加环视运算符来获取 sumdomain 名称(不带顶级域 ex:.com或.com.mx)(但它将在 中匹配两次test@test.com.mx):
[^.@]*?(?=\.\w{2,}$)|[^.@]*?(?=\.com?\.\w{2}$)