2024-09-27 21:27:09 发布
网友
我有这样的条目:
e179206120.adsl.alicedsl.de safecamp-plus-2098.unibw-hamburg.de p5B30EBFE.dip0.t-ipconnect.de
我只想匹配主域名
alicedsl.de unibw-hamburg.de t-ipconnect.de
我试过这个\.\w+\.\w+\.\w{2,3},但是匹配.adsl.alicedsl.de
\.\w+\.\w+\.\w{2,3}
.adsl.alicedsl.de
你可以用下面的数据。你知道吗
[^.]+\.[^.]+$
见^{}
如果您对使用外部库没有限制,请查看TLD extract library
https://pypi.python.org/pypi/tldextract
import tldextract for input in ["e179206120.adsl.alicedsl.de", "safecamp-plus-2098.unibw-hamburg.de", "p5B30EBFE.dip0.t-ipconnect.de"]: input_tld = tldextract.extract(input) print input_tld.domain+"."+input_tld.suffix
那[^.]+\.\w+$呢
[^.]+\.\w+$
See it work
或者,在Python中:
import re tgt='''\ e179206120.adsl.alicedsl.de safecamp-plus-2098.unibw-hamburg.de p5B30EBFE.dip0.t-ipconnect.de''' print re.findall(r'([^.]+\.\w+$)', tgt, re.M | re.S) # ['alicedsl.de', 'unibw-hamburg.de', 't-ipconnect.de']
正则表达式解释:
[^.]+
.
\.
\
\w+
[a-z] [A-Z] [0-9] [_]
[a-zA-Z]+
$
你应该知道你对TLD的定义是不完整的。例如,这个regex方法将破坏bbc.co.uk的合法url和许多其他包含公共SLD的url。如果可以的话,可以使用一个库来获得更广泛的适用性。您还可以使用mozilla list of TLD and SLD's来知道何时应该在host的定义中包含两个句点。你知道吗
你可以用下面的数据。你知道吗
见^{}
如果您对使用外部库没有限制,请查看TLD extract library
https://pypi.python.org/pypi/tldextract
那
[^.]+\.\w+$
呢See it work
或者,在Python中:
正则表达式解释:
[^.]+
除文字.
之外的1个或多个字符\.
literal.
它需要\
,因为如果不使用它,它将是regex的任何chaarcter\w+
在[a-z] [A-Z] [0-9] [_]
范围内的一个或多个字符可能是[a-zA-Z]+
,因为没有任何不是ASCII的旧的TLD。如果您想管理较新的Internationalized TLD's,您需要一个不同的正则表达式。你知道吗$
行结尾的断言你应该知道你对TLD的定义是不完整的。例如,这个regex方法将破坏bbc.co.uk的合法url和许多其他包含公共SLD的url。如果可以的话,可以使用一个库来获得更广泛的适用性。您还可以使用mozilla list of TLD and SLD's来知道何时应该在host的定义中包含两个句点。你知道吗
相关问题 更多 >
编程相关推荐