[英]Python Regex find all matches after specific word
我有如下字符串"Server: myserver.mysite.com\r\nAddress: 111.122.133.144\r\n\r\nName: myserver.mysite.com\r\nAddress: 123.144.412.111\r\nAliases: alias1.myserver.mysite.com\r\n\t myserver.mysite.com\r\n\r\n"
我目前正在努力在 python 中编写 function ,它将找到所有别名并将它们放入列表中。 所以基本上,我需要一个列表,它将是['alias1.myserver.mysite.com', 'myserver.mysite.com']
我尝试了以下代码
pattern = '(?<=Aliases: )([\S*]+)'
name = re.findall(pattern, mystring)
但它只匹配第一个别名,而不是两者。
对此有什么想法吗?
非常感激!
尝试以下操作:
import re
s = "Server: myserver.mysite.com\r\nAddress: 111.122.133.144\r\n\r\nName: myserver.mysite.com\r\nAddress: 123.144.412.111\r\nAliases: alias1.myserver.mysite.com\r\n\t myserver.mysite.com\r\n\r\n"
l = re.findall(r'\S+', s.split('Aliases: ')[1])
print(l)
印刷:
['alias1.myserver.mysite.com', 'myserver.mysite.com']
解释
首先,我们将字符串分成两部分,并使用s.split('Aliases: ')[1]
保留第二部分。 这将评估为“别名:”之后的字符串部分。
接下来我们将findall
与正则表达式一起使用:
\S+
这匹配一个或多个非空格字符的所有连续字符串。
但在这种情况下,这可以更简单地完成,而无需使用正则表达式:
s = "Server: myserver.mysite.com\r\nAddress: 111.122.133.144\r\n\r\nName: myserver.mysite.com\r\nAddress: 123.144.412.111\r\nAliases: alias1.myserver.mysite.com\r\n\t myserver.mysite.com\r\n\r\n"
l = s.split('Aliases: ')[1].split()
print(l)
尝试这个:
import re
regex = re.compile(r'[\n\r\t]')
t="Server: myserver.mysite.com\r\nAddress: 111.122.133.144\r\n\r\nName: myserver.mysite.com\r\nAddress: 123.144.412.111\r\nAliases: alias1.myserver.mysite.com\r\n\t myserver.mysite.com\r\n\r\n"
t = regex.sub(" ", t)
t = t.split("Aliases:")[1].strip().split()
print(t)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.