Проанализируйте корневой домен с помощью Perl [duplicate]

Мьютекс в C # может использоваться для нескольких процессов. Вот пример для нескольких процессов, записывающих в один файл:

using (var mutex = new Mutex(false, "Strand www.jakemdrew.com"))
{
    mutex.WaitOne();
    File.AppendAllText(outputFilePath,theFileText);
    mutex.ReleaseMutex();
}

Вам нужно убедиться, что мьютексу присвоено уникальное имя, которое будет совместно использоваться во всей системе.

Дополнительное чтение здесь:

http://www.albahari.com/threading/part2.aspx#_Mutex

3
задан Jess 1 April 2013 в 13:59
поделиться

5 ответов

Просто некоторые простые вещи регулярных выражений.

$facebook = "www.facebook.com/xxxxxxxxxxx";

$facebook =~ s/www\.(.*\.com).*/$1/; # get what is between www. and .com

print $facebook;

Возвращает

facebook.com

Вы также можете сделать эту работу для .net, .org и т. д. Что-то например:

s/www\.(.*\.(?:net|org|com)).*/$1/;
-1
ответ дан Jared 20 August 2018 в 19:24
поделиться
  • 1
    Это Очень сложно , чтобы получить право с одним регулярным выражением. Вы действительно должны быть осторожны. Что делать, если это http или https протокол. Что делать, если нет www.. Что делать, если есть URL, например mobile.google.com/a/b . Проверка косой черты в регулярном выражении жадна. Вы можете исправить некоторые из этих проблем, но вам, вероятно, придется укусить регулярное выражение. Это достойный ответ и решает проблему для ввода образца, но не всех возможных URL-адресов ... – Jess 26 March 2013 в 04:32
  • 2
    Не работает http://www.google.ca/. Не удалось выполнить http://www.theregister.co.uk/ – ikegami 26 March 2013 в 04:33

Мне нравится ответ URI. ОП запросил регулярное выражение, поэтому в честь запроса и как вызов, вот ответ, который я придумал. Справедливости ради, иногда устанавливать модули CPAN нелегко или возможно. Я работал над некоторыми проектами, которые упрощены с использованием очень специфической версии Perl, и разрешены только определенные модули.

Вот моя попытка ответить на регулярный вызов. Обратите внимание, что www. является необязательным. Поддомены, такие как mobile., соблюдаются. Поиск / не является жадным, поэтому URL-адрес с каталогами на конце будет корректно проанализирован. Я не зависим от протокола; это может быть http, https, file, sftp.

^.*://(?:[wW]{3}\.)?([^:/]*).*$

Вход для образца:

http://WWW.facebook.com:80/
http://facebook.com/xxxxxxxxxxx/aaaaa
http://www.stackoverflow.com/yyyyyyyyyyyyyyyy/aaaaaaa
https://mobile.yahoo.com/yyyyyyyyyyyyyyyy/aaaaaaa
http://www.theregister.co.uk/

Выходной сигнал:

facebook.com
facebook.com
stackoverflow.com
mobile.yahoo.com
theregister.co.uk

EDIT: Спасибо @ikegami для дополнительной задачи. :) Теперь он поддерживает WWW в любом смешанном случае и номер порта, например :80.

2
ответ дан ikegami 20 August 2018 в 19:24
поделиться
  • 1
    Как насчет http://mobile.google.com/? https://www.facebook.com/? HTTP://www.facebook.com/? http://www.com/? http://www3.com/? – ikegami 26 March 2013 в 04:40
  • 2
    (Сейчас работает для https://www.facebook.com/ HTTP://www.facebook.com/ и http://www3.com/. Фундаментальные недостатки дизайна предотвращают исправления для других.) – ikegami 26 March 2013 в 07:17
  • 3
    Мы не знаем, хочет ли ОР субдомены или корневой домен. Должен ли быть ответ mobile.google.com или google.com? Это не ясно в вопросе. – Jess 26 March 2013 в 17:50
  • 4
    @ikegami, Исправлено! Любые другие сбои вы не видите? (Помимо поддомена и того факта, что регулярные выражения начинают получать ugly);) – Jess 26 March 2013 в 23:13
  • 5
    просто http://www.com/, что можно считать приемлемым потерянным. – ikegami 27 March 2013 в 05:29
  • 6
    Если у вас есть домен в форме: & quot; subdomain.domain.tld & quot; вы можете получить & quot; domain.tld & quot; с: state $parser = Domain::PublicSuffix->new(); $parser->get_root_domain($subdomain_domain_tld); (это то, что объяснил икегами, но без необходимости разбора URL-адреса). Спасибо ikegami. – lepe 21 July 2015 в 09:48
$a="http://www.stackoverflow.com/yyyyyyyyyyyyyyyy";
if($a=~/\/\/\w+\.(.*)\// )
{   print $1; }
else
{ print "false";  }
0
ответ дан Shubham Rohatgi 20 August 2018 в 19:24
поделиться

Это может быть полезно ...

^https?:\/\/www\.([\da-zA-Z\.-]+)

Пример ввода:

http://www.banglanews24.com/detailsnews.php
nssl=763daee77dc90b1c1baf0a361be2ff3c&nttl=20130416072403189462

http://www.prothom-alo.com/detail/date/2013-04-20/news/3463

http://www.facebook.com/xxxxxxxxxxx

http://www.stackoverflow.com/yyyyyyyyyyyyyyy

Выходной сигнал:

banglanews24.com

prothom-alo.com

facebook.com

stackoverflow.com
2
ответ дан Suvasish Sarker 20 August 2018 в 19:24
поделиться
11
ответ дан ikegami 31 October 2018 в 14:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: