Regex для субдомена, который позволяет `wwwboys.domain.com` - PullRequest
1 голос
/ 10 марта 2010

Мне нужно регулярное выражение, которое даст мне следующие результаты для каждого примера, и я не могу понять, что оно правильно:

example.com выходов -> ничего / пусто

www.example.com выходов -> ничего / пусто

account.example.com урожайность -> account

mywww.example.com выходы -> mywww

wwwboys.example.com урожайность -> wwwboys

cool-www.example.com урожайность -> cool-www

Таким образом, не имеет значения, используют ли они «www» в поддомене, но это не может быть только «www». Он также может содержать дефисы.

Ответы [ 3 ]

1 голос
/ 10 марта 2010
mystrings="""
example.com
www.example.com
account.example.com
mywww.example.com
wwwboys.example.com
cool-www.example.com
"""

junk=["example.com","www.example.com"]
for url in mystrings.split("\n"):
    if url and not url.strip() in junk:
       print "-->",url.split(".",2)[0]

выход

$ ./python.py
--> account
--> mywww
--> wwwboys
--> cool-www
1 голос
/ 10 марта 2010
x="""example.com yields -> nothing / empty

www.example.com yields -> nothing / empty

account.example.com yields -> account

mywww.example.com yields -> mywww

wwwboys.example.com yields -> wwwboys

cool-www.example.com yields -> cool-www"""

>>> re.findall("^([A-Za-z0-9-]+)\.(?<!^www\.)[A-Za-z0-9-]+\.[A-Za-z]+",x,re.MULTILINE)
['account', 'mywww', 'wwwboys', 'cool-www']
0 голосов
/ 10 марта 2010

Вот мое решение, основанное на примере ghostdog74:

OFF_LIMITS = ('api', 'www', 'secure', 'account')

def get_safe_subdomain_or_none(host):
    subdomain = None
    L = host.split('.')
    if len(L) is 3 and not L[0] in OFF_LIMITS:  # 3 ensures that you don't have a sub-sub domain, and that you don't have just `example.com`
        subdomain = L[0]
    return subdomain
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...