heavenm 发表于 2018-8-16 18:15:47

正则获取网址主域名的方法

### 友情提示:本脚本由 Au3.REHelper 于 2018/08/16 18:13 自动生成,不保证其正确性,请自行测试 ###
#include <Array.au3>
Local $sSource = 'https://www.baidu.com/123123213?xx=123'
;~MsgBox(0, '源字符串', $sSource)
Local $aSRE = StringRegExp($sSource, '(?i)(f|https?:\/\/).*\.([^/.]*)(\.[^/.]*)\/?.*', 3)
If Not @Error Then MsgBox(0, '匹配数量: ' & UBound($aSRE), '其中元素为: ' & $aSRE)
_ArrayDisplay($aSRE, UBound($aSRE))

基本上大多数可以匹配,但是
https://www.baidu.com.cn/123123213?xx=123
这样子就匹配不了了

绿色风 发表于 2018-8-16 18:48:11

#Include <WinHttp.au3>
_WinHttpCrackUrl这个应该是你要的不

zghwelcome 发表于 2018-8-16 19:49:14

#include <WinAPIShPath.au3>
Local $sUrl = 'https://www.baidu.com.cn/123123213?xx=123'
Local $sHost = _WinAPI_UrlGetPart ( $sUrl, $URL_PART_HOSTNAME )
MsgBox(0,0,$sHost)



zghwelcome 发表于 2018-8-16 19:52:32

正则,可能不全面

Local $sUrl = 'https://www.baidu.com.cn/123123213?xx=123'
Local $sHost_Reg = StringRegExp($sUrl,'(?i)https?://([^\s/]+)',1)
If Not @error Then MsgBox(0,0,$sHost_Reg)



heavenm 发表于 2018-8-16 21:20:44

本帖最后由 heavenm 于 2018-8-16 21:30 编辑

绿色风 发表于 2018-8-16 18:48
#Include
_WinHttpCrackUrl这个应该是你要的不
这个试过了,貌似不好用,比较难识别出主域名,我只想要XXX.COM,不想要前面的前缀

heavenm 发表于 2018-8-16 21:22:56

zghwelcome 发表于 2018-8-16 19:52
正则,可能不全面

我不想要识别出前面的
www.baidu.com.cn
只要
baidu.com.cn
而且根据不同情况,说不准还需要前面的协议 http://
所以拆分的方法最好

heavenm 发表于 2018-8-16 21:27:31

修正一下,匹配这种情况https://baidu.com/123123213?xx=123
依然没有解决.com.cn的问题
(?i)(f|https?:\/\/)(?:\w*\.)?([^/.]*)(\.[^/.]*)\/?.*
### 友情提示:本脚本由 Au3.REHelper 于 2018/08/16 21:26 自动生成,不保证其正确性,请自行测试 ###
#include <Array.au3>
Local $sSource = 'https://baidu.com.cn/123123213?xx=123'
;~MsgBox(0, '源字符串', $sSource)
Local $aSRE = StringRegExp($sSource, '(?i)(f|https?:\/\/)(?:\w*\.)?([^/.]*)(\.[^/.]*)\/?.*', 3)
If Not @Error Then MsgBox(0, '匹配数量: ' & UBound($aSRE), '其中元素为: ' & $aSRE)
_ArrayDisplay($aSRE, UBound($aSRE))

heavenm 发表于 2018-8-16 21:28:39

本帖最后由 heavenm 于 2018-8-16 21:31 编辑

.com.cn 这种域名估计只能通过匹配所有的域名后缀来解决吧!好像看他们都是那样子解决的否则应该是无解的!

zghwelcome 发表于 2018-8-16 22:24:24

(?im)https?://(?:www\.)?([^/s/]+)

heavenm 发表于 2018-8-16 22:36:37

全球所有的域名后缀
.cn
.com
.edu
.gov
.int
.mil
.net
.org
.biz
.info
.pro
.name
.museum
.coop
.aero
.xxx
.idv
.al
.dz
.af
.ar
.ae
.aw
.om
.az
.eg
.et
.ie
.ee
.ad
.ao
.ai
.ag
.at
.au
.mo
.bb
.pg
.bs
.pk
.py
.ps
.bh
.pa
.br
.by
.bm
.bg
.mp
.bj
.be
.is
.pr
.ba
.pl
.bo
.bz
.bw
.bt
.bf
.bi
.bv
.kp
.gq
.dk
.de
.tl
.tp
.tg
.dm
.do
.ru
.ec
.er
.fr
.fo
.pf
.gf
.tf
.va
.ph
.fj
.fi
.cv
.fk
.gm
.cg
.cd
.co
.cr
.gg
.gd
.gl
.ge
.cu
.gp
.gu
.gy
.kz
.ht
.kr
.nl
.an
.hm
.hn
.ki
.dj
.kg
.gn
.gw
.ca
.gh
.ga
.kh
.cz
.zw
.cm
.qa
.ky
.km
.ci
.kw
.cc
.hr
.ke
.ck
.lv
.ls
.la
.lb
.lt
.lr
.ly
.li
.re
.lu
.rw
.ro
.mg
.im
.mv
.mt
.mw
.my
.ml
.mk
.mh
.mq
.yt
.mu
.mr
.us
.um
.as
.vi
.mn
.ms
.bd
.pe
.fm
.mm
.md
.ma
.mc
.mz
.mx
.nr
.np
.ni
.ne
.ng
.nu
.no
.nf
.na
.za
.aq
.gs
.eu
.pw
.pn
.pt
.jp
.se
.ch
.sv
.ws
.yu
.sl
.sn
.cy
.sc
.sa
.cx
.st
.sh
.kn
.lc
.sm
.pm
.vc
.lk
.sk
.si
.sj
.sz
.sd
.sr
.sb
.so
.tj
.tw
.th
.tz
.to
.tc
.tt
.tn
.tv
.tr
.tm
.tk
.wf
.vu
.gt
.ve
.bn
.ug
.ua
.uy
.uz
.es
.eh
.gr
.hk
.sg
.nc
.nz
.hu
.sy
.jm
.am
.ac
.ye
.iq
.ir
.il
.it
.in
.id
.uk
.vg
.io
.jo
.vn
.zm
.je
.td
.gi
.cl
.cf
.yr
.ac.cn
.ah.cn
.bj.cn
.com.cn
.cq.cn
.fj.cn
.gd.cn
.gov.cn
.gs.cn
.gx.cn
.gz.cn
.ha.cn
.hb.cn
.he.cn
.hi.cn
.hk.cn
.hl.cn
.hn.cn
.jl.cn
.js.cn
.jx.cn
.ln.cn
.mo.cn
.net.cn
.nm.cn
.nx.cn
.org.cn

我发现只有中国的,有2个点的后缀,其他地方都没有嘛!

afan 发表于 2018-8-16 22:47:36

(?i)(f|https?://)(?:www\.)?([\w.]+(?:\.cn)?)/?

heavenm 发表于 2018-8-16 23:37:27

本帖最后由 heavenm 于 2018-8-16 23:46 编辑

(?:\.\w+(?:.cn)?$)|(\.\w+(?:.cn)?)(?:/)完美匹配后缀,但是组合起来就有问题!!~

heavenm 发表于 2018-8-16 23:38:30

本帖最后由 heavenm 于 2018-8-16 23:47 编辑

我X我以为解决了,还是问题,难受香菇

afan 发表于 2018-8-17 00:12:13

heavenm 发表于 2018-8-17 00:47:32

本帖最后由 heavenm 于 2018-8-17 00:49 编辑

afan 发表于 2018-8-17 00:12

噢!我知道原因了,我修改了一下,把www替换成\w就不行了
(?i)(f|https?://)(?:\w*\.)?([\w.]+(?:\.cn)?)/?
因为有可能存在
https://XXX.baidu.com
页: [1] 2 3
查看完整版本: 正则获取网址主域名的方法