匹配一个不包含点且不是 IP 正则表达式的单词
Match a word that doesn't contain a dot and isn't an IP regex
我想获取一个列表并对其进行过滤(在本例中,它是一个包含记录、域名和 ip 的列表)。
我希望列表是这样的:
10.0.0.10 ansible0 ben1.com
ansible1 ben1.com 10.0.0.10
也就是说,您可以将 ip 区域和记录放在任何地方,它仍然会捕获它们。
现在我得到了 2 个正则表达式,一个捕获域(带点)和 IP:
域:[a-zA-Z0-9][a-zA-Z0-9-]{1,61}[a-zA-Z0-9]\.[a-zA-Z]{2,}
简单 IP:(?:[0-9]{1,3}\.){3}[0-9]{1,3}
有了这些,我可以抓取 python 所有域名并将它们放入列表和所有 ips。
现在我只需要捕获“子域”(在本例中为 ansible1 和 ansible0)。
我希望它能够包含数字和字符,例如 - _ *
等等,除了 .
.
我怎样才能通过正则表达式做到这一点?
您可以将此正则表达式与 3 个交替和 3 个命名组一起使用:
(?P<domain>[a-zA-Z0-9][a-zA-Z0-9-]{1,61}[a-zA-Z0-9]\.[a-zA-Z]{2,})|
(?P<ip>(?:[0-9]{1,3}\.){3}[0-9]{1,3})|
(?P<sub>[^\s.]+)
命名组 domain
和 ip
正在使用您提供的正则表达式。第三组是 (?P<sub>[^\s.]+)
匹配 1+ 个不是点也不是空格的字符。
代码:
import re
arr = ['10.0.0.10 ansible0 ben1.com', 'ansible1 ben1.com 10.0.0.10']
rx = re.compile(r'(?P<domain>[a-zA-Z0-9][a-zA-Z0-9-]{1,61}[a-zA-Z0-9]\.[a-zA-Z]{2,})|(?P<ip>(?:[0-9]{1,3}\.){3}[0-9]{1,3})|(?P<sub>[^\s.]+)')
subs = []
for i in arr:
for m in rx.finditer(i):
if (m.group('sub')): subs.append(m.group('sub'))
print (subs)
输出:
['ansible0', 'ansible1']
我想获取一个列表并对其进行过滤(在本例中,它是一个包含记录、域名和 ip 的列表)。 我希望列表是这样的:
10.0.0.10 ansible0 ben1.com
ansible1 ben1.com 10.0.0.10
也就是说,您可以将 ip 区域和记录放在任何地方,它仍然会捕获它们。
现在我得到了 2 个正则表达式,一个捕获域(带点)和 IP:
域:[a-zA-Z0-9][a-zA-Z0-9-]{1,61}[a-zA-Z0-9]\.[a-zA-Z]{2,}
简单 IP:(?:[0-9]{1,3}\.){3}[0-9]{1,3}
有了这些,我可以抓取 python 所有域名并将它们放入列表和所有 ips。
现在我只需要捕获“子域”(在本例中为 ansible1 和 ansible0)。
我希望它能够包含数字和字符,例如 - _ *
等等,除了 .
.
我怎样才能通过正则表达式做到这一点?
您可以将此正则表达式与 3 个交替和 3 个命名组一起使用:
(?P<domain>[a-zA-Z0-9][a-zA-Z0-9-]{1,61}[a-zA-Z0-9]\.[a-zA-Z]{2,})|
(?P<ip>(?:[0-9]{1,3}\.){3}[0-9]{1,3})|
(?P<sub>[^\s.]+)
命名组 domain
和 ip
正在使用您提供的正则表达式。第三组是 (?P<sub>[^\s.]+)
匹配 1+ 个不是点也不是空格的字符。
代码:
import re
arr = ['10.0.0.10 ansible0 ben1.com', 'ansible1 ben1.com 10.0.0.10']
rx = re.compile(r'(?P<domain>[a-zA-Z0-9][a-zA-Z0-9-]{1,61}[a-zA-Z0-9]\.[a-zA-Z]{2,})|(?P<ip>(?:[0-9]{1,3}\.){3}[0-9]{1,3})|(?P<sub>[^\s.]+)')
subs = []
for i in arr:
for m in rx.finditer(i):
if (m.group('sub')): subs.append(m.group('sub'))
print (subs)
输出:
['ansible0', 'ansible1']