【发布时间】:2016-05-30 20:20:42
【问题描述】:
我希望能够按照以下规则匹配域:
- 域名应该是a-z | AZ | 0-9 和连字符 (-)
- 域名长度应介于 1 到 63 个字符之间
- 最后一个 Tld 必须至少为两个字符,最多为 6 个字符
- 域名不应以连字符 (-) 开头或结尾(例如 -google.com 或 google-.com)
- 域名可以是子域(例如 mkyong.blogspot.com)
我已经有了 java 风格的正则表达式,我只需要这个 python 风格的
^((?!-)[A-Za-z0-9-]{1,63}(?<!-)\\.)+[A-Za-z]{2,6}$
我找不到任何 python 正则表达式,因为每个人都希望使用 urlparse。我不需要按域、端口、tlds 等拆分 url,我只需要做一个简单的域替换,所以正则表达式应该是我的解决方案
我做了什么:
expectedstring = re.sub(r"^((?!-)[A-Za-z0-9-]{1,63}(?<!-)\\.)+[A-Za-z]{2,6}$" , "XXX" , string)
示例字符串:
string = "This is why this domain example.com will never be the same after some years, it might just be example.co.uk but will never get to example.-com. Documents could be located in this specific location http://en.example.com/documents/print.doc as you probably already know."
expectedstring = "This is why this domain XXX will never be the same after some years, it might just be XXX but will never get to example.-com. Documents could be located in this specific location http://XXX/documents/print.doc as you probably already know."
有效域名列表
- www.google.com
- google.com
- mkyong123.com
- mkyong-info.com
- sub.mkyong.com
- sub.mkyong-info.com
- mkyong.com.au
- g.co
- mkyong.t.t.co
无效域名列表,以及原因。
- mkyong.t.t.c - Tld 的长度必须在 2 到 6 之间
- mkyong,com - 不允许使用逗号
- mkyong - 没有 Tld
- mkyong.123 , Tld 不允许数字
- .com - 必须以 [A-Za-z0-9] 开头
- mkyong.com/users - 无 Tld
- mkyong.com - 不能以连字符开头 -
- mkyong-.com - 不能以连字符结尾 -
- sub.-mkyong.com - 不能以连字符开头 -
- sub.mkyong-.com - 不能以连字符结尾 -
【问题讨论】:
-
当你在 Python 中尝试这个“java 风格的正则表达式”时发生了什么?对我来说,这看起来像是完全正常的标准正则表达式语法。
-
我在做:string = re.sub(r"^((((([A-Za-z0-9]+){1,63}\.)|(([A -Za-z0-9]+(\-)+[A-Za-z0-9]+){1,63}\.))+){1,255}$" , "XXX" , string) 没有任何变化
-
嗯,这是与您的问题不同的正则表达式。另外,
string是什么? -
我搞砸了,我已经更新了我的问题以匹配正确的正则表达式并且正在使用
-
这是一个好域名吗?
mkyong.t.t.t.co