提取连接字符串的特定部分

时间:2010-07-27 07:39:27

标签: python regex string connection-string

如何提取@之后(如果有的话)和下一个.(如果有的话)之前的内容?

示例:

host
host.domain.com
user@host
first.last@host
first.last@host.domain.com
first@host.domain.com

我需要在变量中获取host

Python中的建议?任何方法都受到欢迎。

谢谢,

编辑:我解决了我的问题。需要匹配hosthost.blah.blah

8 个答案:

答案 0 :(得分:1)

您可以使用几个string.split来电,第一个使用'@'作为分隔符,第二个使用'。'

答案 1 :(得分:0)

'@'进行拆分,然后进行子串。

答案 2 :(得分:0)

>>> x = "first.last@host.domain.com"
>>> x.split("@")[1].split(".")[0]
'host'
>>> y = "first.last@host"
>>> y.split("@")[1].split(".")[0]
'host'
>>> 

如果字符串中没有@,则会抛出IndexError异常。

答案 3 :(得分:0)

'first.last@host.domain.com'.split('@')[1].split('.')[0]

答案 4 :(得分:0)

host = re.search(r"@(\w+)(\.|$)", s).group(1)

答案 5 :(得分:0)

这是另一个解决方案:

re.search("^.*@([^.]*).*", str).group(1)

编辑: 更好的解决方案归功于评论:

re.search("@([^.]*)[.]?", str).group(1)

答案 6 :(得分:0)

>>> s="first.last@host.domain.com"
>>> s[s.index("@")+1:]
'host.domain.com'
>>> s[s.index("@")+1:].split(".")[0]
'host'

答案 7 :(得分:0)

import re

hosts = """
user@host1
first.last@host2
first.last@host3.domain.com
first@host4.domain.com
"""

print re.findall(r"@(\w+)", hosts)  

返回:

['host1', 'host2', 'host3', 'host4']