Страницы: 1
RSS
Вычленить текст из ячейки
 
Добрый вечер!
Задача - вычленить из ячейки с интернет-адресом название сайта.
Например, из ячейки с текстом:
httр://mscrl.microsoft.com/pki/mscorp/crl/msitwww2.crl
нужно только
microsoft.com
 
=ЛЕВБ(ПСТР(A1;ПОИСК(".";A1)+1;30);ПОИСК("/";ПСТР(A1;ПОИСК(".";A1)+1;30))-1)
И после этого не говорите, что есть другие написания. Например, несколько точек или "/" перед требуемым текстом.
 
спасибо!
 
Можно с помощью UDF (если второй аргумент ИСТИНА или не задан - возвращает полное имя хоста, если ЛОЖЬ - только имя (т.е. домен второго уровня)
Код
Option Explicit
Function GetSiteName$(aURL As String, Optional FullHost As Boolean = True)
    With CreateObject("VBScript.RegExp")
        .Pattern = "(?://)(.+?)(?:/)"
        If .test(aURL) Then GetSiteName = .Execute(aURL)(0).Submatches(0)
        If Not FullHost Then
            .Pattern = "(?:\.)(.+?\..+)(?=$)"
            GetSiteName = .Execute(GetSiteName)(0).Submatches(0)
        End If
    End With
End Function

 
MBT, огромное спасибо!!!
 
Я бы так написал:
Код
Function GetSiteName$(aURL As String, Optional FullHost As Boolean = True)
    Dim mc
    With CreateObject("VBScript.RegExp")
        .pattern = "//(.+?\.)(.+?)(?:/)"
        Set mc = .Execute(aURL)
        If mc.Count > 0 Then GetSiteName$ = IIf(FullHost, mc(0).SubMatches(0), "") & mc(0).SubMatches(1)
    End With
End Function
There is no knowledge that is not power
 
А может кто-то сбросить ссылку на хорошее описание параметров/значений ".pattern=" ?

Вот например нашел для себя вытаскивание подряд идущих шести любых цифр параметром "\d{6}", это нужно было, когда в середине текста содержался индекс, слева название компании, справа адрес. И нужно было всё это разнести по разным колонкам. Вот вытащив индекс, это стало легко:
Код
[/CODE]Sub ExtNumbers6()
' извлечение нужного количества подряд идущих цифр
Dim c As Range, x
On Error Resume Next
With CreateObject("vbscript.regexp")
    .Pattern = "\d{6}" '6 цифр
    For Each c In Selection.Cells
        c.Value = .Execute(c.Value)(0)
    Next
End With
End Sub

[CODE]
Изменено: VasiliePavlov - 01.12.2015 11:03:28
 
Цитата
VasiliePavlov написал: А может кто-то сбросить ссылку на хорошее описание параметров/значений ".pattern=" ?
http://www.script-coding.com/WSH/RegExp.html#4.
Изменено: Казанский - 01.12.2015 13:45:05
 
Цитата
VasiliePavlov написал: А может кто-то сбросить ссылку на хорошее описание параметров/значений ".pattern=" ?
VBScript Programmer's Reference, 3-d Edition
There is no knowledge that is not power
Страницы: 1
Наверх