Извлечь определенную часть строки подключения - PullRequest
2 голосов
/ 27 июля 2010

Любой способ извлечь что после @ (если есть) и до следующего . (если есть)?

Примеры:

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

Мне нужно получитьhost в переменной.

Предложения в Python?Любой метод приветствуется.

Спасибо,

РЕДАКТИРОВАТЬ: я исправил свой вопрос.Необходимо сопоставить host и host.blah.blah тоже.

Ответы [ 8 ]

1 голос
/ 27 июля 2010

Вы можете использовать пару вызовов string.split, первый с использованием '@' в качестве разделителя, второй с использованием '.'

0 голосов
/ 27 июля 2010
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']
0 голосов
/ 27 июля 2010
>>> s="first.last@host.domain.com"
>>> s[s.index("@")+1:]
'host.domain.com'
>>> s[s.index("@")+1:].split(".")[0]
'host'
0 голосов
/ 27 июля 2010

Вот еще одно решение:

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

edit: гораздо лучшее решение благодаря комментарию:

re.search("@([^.]*)[.]?", str).group(1)
0 голосов
/ 27 июля 2010
host = re.search(r"@(\w+)(\.|$)", s).group(1)
0 голосов
/ 27 июля 2010
'first.last@host.domain.com'.split('@')[1].split('.')[0]
0 голосов
/ 27 июля 2010
>>> x = "first.last@host.domain.com"
>>> x.split("@")[1].split(".")[0]
'host'
>>> y = "first.last@host"
>>> y.split("@")[1].split(".")[0]
'host'
>>> 

Будет выдано исключение IndexError, если в строке нет @.

0 голосов
/ 27 июля 2010

сделать разбиение на '@', а затем подстроку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...