(?<=//|)(((\w)+\.)+\w+)(\:(\d+)) 这个正则怎么理解

(?<=//|)(((w)+.)+w+)(:(d+)) 这个正则怎么理解
阅读 3.8k
1 个回答

这个正则想匹配网址,类似于这种的(有域名,有端口号) http://second.www.baidu.com:8080second.www.baidu.com:8080,取其中 //后或者开头后的部分。
你这个正则写的又有点问题,其中的//应该加上转义字符后变成 \/\/(\w)+这句的意图应该写成\w+.

给你改写了一下 (?<=\/\/|^)((\w+\.)+\w+)(\:(\d+))

分段解释下:

  1. (?<=\/\/|^)要求匹配的目标前面必须有 //或者匹配的目标在最前面。
  2. (\w+\.)+\w+匹配 文本.一次或多次 + 文本,形如 abcd.efgh abcd.efgh.izk abcd.efgh.izk.sfds都能被匹配上, abcd单独不能被匹配
  3. \:(\d+) 匹配 :多个数字, 即端口号
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进