Так что я хочу, чтобы соответствовать только домен из эфира:Match доменное имя из URL (www.google.com = Google)
http://www.google.com/test/
http://google.com/test/
http://google.net/test/
Выход должен быть для всех 3: гугле
I получил этот код работает только .com
echo "http://www.google.com/test/" | sed -n "s/.*www\.\(.*\)\.com.*$/\1/p"
Output: 'google'
Тогда я думал, что это будет так просто, как делать слово (обыкн | нетто), но это не похоже, чтобы быть правдой:
echo "http://www.google.com/test/" | sed -n "s/.*www\.\(.*\)\.(com|net).*$/\1/p"
Output: '' (nothing)
Я собирался использовать подобный метод, чтобы избавиться от «WWW», но, кажется, я делаю что-то неправильно ... (она не работает с регулярным выражением вне \ (\) ...)
До тех пор, пока вы ограничиваете область проблем (предназначенную для каламбуров) для URL-адреса, аналогичного указанному, регулярные выражения могут адекватно служить цели. Если вам также необходимо иметь дело с такими URL-адресами, как «www.someuniverisity.ac.uk» или «products.somecompany.co.jp» или даже «www.cityofwherever.somestate.us», может быть целесообразно использовать более выразительные и общие (которые, возможно, могли бы использовать RE как часть их логики синтаксического анализа, но также могли бы реализовать более сложный и изменяющийся набор правил) – mjv
Технически «google.com» и «www.google.com» * являются * именами доменов. Кажется, вас интересует доменное имя * второго уровня *.:) – deceze
Да, хорошо, что это домен второго уровня, я знал, что у меня был неправильный термин для него, но я не мог вспомнить, как его называли, поэтому я подумал, что вы получите то, что я имел в виду, с некоторыми примерами :) – Mint