正则获取网址,不知道 11 行处的代码改变后为什么没用了

1.问题:
第一条正则表达式获取 163/qq/gmail 格式邮箱,最后只得到 '163', 'qq', 'gmail'
第二条正则却能得到正确邮箱,不是很理解,希望有前辈告知原因

2.代码

  • 代码1:

  1 import re
  2 
  3 urls = """
  4 http://www.ireaqwe.com/messfo.asp?id=35
  5 http://3995503.com/cld/cla09/news_sw.asp?id=14
  6 http://lib.wdf.edu.cn/news/onews.asp?id=769
  7 http://www.zsy-lass.com/alfx.asp?newsid=377&id=6
  8 http://www.fsaacm.com/newslasisad.asp?id=415
  9 """
 10 
 11 res = re.findall(r'http://.*\.(com|cn)/', urls)
 12 print(res)
结果:`['com', 'com', 'cn', 'com', 'com']`
  • 代码2(改变 11 行语句):

11 res = re.findall(r'http://.*\.com/|http://.*\.cn/', urls)

结果

['http://www.interoem.com/', 'http://3995503.com/', 'http://lib.wzmc.edu.cn', 'http://www.zy-ls.com/', 'http://www.fincm.com/']
阅读 2k
1 个回答

在正则表达式中使用“()”会让括号中的内容变成一个“组”,要达到你的要求,应改成(?:com|cn)

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题