正则表达式求助(有点难度)

taogx 2003-06-20 01:02:06
我想做一个替换,假如字符串如下(作为变量$tmpstr)
webmail.ssde.com
mail.ssde.com
webmail.emailss.com
webmail.ssemail.com


替换后效果为:
ssde.com
ssde.com
emailss.com
ssemail.com

也就是去掉最前面的webmail或mail
我用的ER为$tmpstr=~s/[webmail|mail]\.//;
结果第4个例子替换后为ssecom,

请教大家怎样修改ER才行?

谢谢!
...全文
50 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
dxymm 2003-06-26
  • 打赏
  • 举报
回复
非要用正则表达式吗,按照你的要求,那就把左边第一个“.”之前的字符用Replace替换为空不可以吗
liu22 2003-06-20
  • 打赏
  • 举报
回复
$tmpstr =~ s/^(webmail|mail)\.//i;

这样可以仅去除以webmail或mail开头的域名

$tmpstr=~s/[webmail|mail]\.//; #这样会去掉域名中所有出现的相匹配的字符
taogx 2003-06-20
  • 打赏
  • 举报
回复
no 仅处理webmail mail
还有多级域名(比如:webmaildd.cc.dd.ssmail.com)
cronzb 2003-06-20
  • 打赏
  • 举报
回复
$tmp =~ s/([0-9a-zA-Z]+\.)([0-9a-zA-Z]+\.[0-9a-zA-Z]+)/$2/;

以上是可以处理域名为后两个如:
ss.dd.com => dd.com
abc.adf.com => adf.com

如果域名中还有www.dd.com,只需在原来的基础上排除www.[].[]
pphacker 2003-06-20
  • 打赏
  • 举报
回复
同意楼上的看法,我也是这么认为的,但是怎搞呢?等待答案中
taogx 2003-06-20
  • 打赏
  • 举报
回复
www.ssmail.com 不用处理
而且还有可能是ssmail.com.cn
dd.ssmail.com
这个好像处理不了
cronzb 2003-06-20
  • 打赏
  • 举报
回复
$tmp =~ s/([0-9a-zA-Z]+\.)([0-9a-zA-Z]+\.[0-9a-zA-Z]+)/$2/;

37,718

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧