繁体   English   中英

Python 正则表达式查找特定单词后的所有匹配项

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM